mysql - CakePHP 模型链查找

标签 mysql cakephp model authentication chain

我有一个对象$this->user,它的模型是User。此对象由我的应用程序 Controller 中的 $this->Auth->user 填充,如下所示:

$this->user = ClassRegistry::init('User');
$this->user->set($this->Auth->user);

像魅力一样工作。如果我在我的 Controller 中打印出 $this->user 它会给我:

用户对象 ( [validate] => 数组 ( blah blah blah

一个典型的对象。现在我有一个属于 UserGroup 模型,用户有很多组。这些变量已在模型中正确设置。现在我想为这个登录的特定用户找到所有组。所以我试过这个:

$groups = $this->user->Group->find('list', array('fields'=>array('id', 'group_name')))

关键是我想用$this->user自动根据$this->user中的owner_id过滤Group查询。这对我来说很有意义,如果我有一个代表用户的特定对象并且我根据该用户执行组查询......它应该只返回相关组。

问题是 $groups 包含 Groups 表中的所有条目,而不是显然我只想从当前用户那里得到的条目。我不明白为什么我需要向查找函数添加一个 "conditions"=>"user_id"=$this->Auth->user('id') 参数,因为我已经已经通过模型链指定了我正在使用的用户。

知道为什么这不起作用吗?它运行的 sql 语句只是对 Groups WHERE 1 = 1 的 SELECT(因此根本没有过滤)。

最佳答案

不,对象 User 实际上更像是一个类而不是一个对象。你可以说 Cake 没有完全实现 Active Record 模式(我认为 Cake 3.0 可能会解决这个问题,我不确定)。所以是的,您仍然需要为查找设置条件。而且你不必设置($this->Auth->user);

您可能对 Cake 不是很熟悉:在 Cake 中,您几乎不需要实例化模型对象。它们是根据您指定的当前 Controller 和模型关系为您创建的。

关于mysql - CakePHP 模型链查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7209239/

相关文章:

mysql - ER图一直显示一对多关系

wpf - MVVM 模型实例化

django - 如何在 Django 管理页面中显示外键的属性

mysql - 关于使用数据库进行 Junit 测试

mysql - 在spark-shell中从mysql中读取数据

mysql - 如何将复杂的 linux 终端命令的输出插入到 mysql 数据库表中

php - 如何一次在多个字段中搜索多个单词?

php - cakephp 中的 mysql 函数

mysql - 调查应用程序的关系数据库架构

ruby-on-rails - Rails update_attributes 方法是更新数据库中模型的最佳选择吗?