1

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

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

奇迹般有效。如果我在控制器中 print_r out $this->user 它会给我:

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

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

$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')find 函数添加参数,因为我已经通过模型链指定了我正在使用的用户。

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

4

1 回答 1

0

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

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

于 2011-08-26T19:15:09.673 回答