我有一个模型$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(所以根本不过滤)。
答案 0 :(得分:0)
不,对象User更像是一个类而不是一个对象。你可以说Cake没有完全实现Active Record模式(我认为Cake 3.0可以修复它,不确定)。所以是的,您仍然需要为查找设置条件。而且您不必设置($ this-> Auth-> user);
你可能不太熟悉Cake:在Cake中,你几乎不需要实例化Model对象。它们是根据您指定的当前控制器和模型关系为您创建的。