CakePHP模型链查找

时间:2011-08-26 18:49:05

标签: mysql cakephp model authentication chain

我有一个模型$this->user的对象User。我的app控制器中的$this->Auth->user填充了此对象,如下所示:

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

像魅力一样工作。如果我在控制器中打印出$ this->用户,它会给我:

User Object ( [validate] => Array ( blah blah blah

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

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

关键是我想使用$ this->用户根据$ this->用户中的owner_id自动过滤群组查询。我觉得如果我有一个代表用户的特定对象,并且我根据该用户进行了一个Group查询......那么它应该只返回相关的组。

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

为什么这不起作用的任何想法?它运行的sql语句只是组WHERE 1 = 1上的SELECT(所以根本不过滤)。

1 个答案:

答案 0 :(得分:0)

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

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