CakePHP:为用户检索hasAndBelongsToMany数据

时间:2011-02-01 03:26:49

标签: cakephp many-to-many cakephp-1.3

我想在hasAndBelongsToMany关系中返回仅属于1个用户的数据。我不确定这里的条件: 我收到了警告:

Warning (512): SQL Error: 1054: Unknown column 'UsersFood.user_id' in 'where clause'

有人可以澄清吗?

return $this->find('all', array('conditions' => array(
                'Food.id' => 'Usersfood.food_id',
                'Usersfood.user_id' => $userid,
                 'User.id' => $userid

                )

     )

   );

4 个答案:

答案 0 :(得分:0)

return $this->find('all', array('conditions' => array(
                 'User.id' => $userid
                )
     )

   );

如果您设置了$hasAndBelongsToMany,则无需指定'Food.id' => 'Usersfood.food_id','Usersfood.user_id' => $userid, `

答案 1 :(得分:0)

确保您已根据此页http://book.cakephp.org/view/83/hasAndBelongsToMany-HABTM

正确定义了关系

然后查看http://book.cakephp.org/view/474/Containable

具有该用户食物的特定用户。

$this->find('first', array('conditions' => array('User.id' => 123), 'contain' => array('Food')));

或每个用户的食物

$this->find('all', array('contain' => array('Food')));

答案 2 :(得分:0)

不应该 FoodsUser 而不是 UsersFood

假设你遵循惯例,这是来自书:“这个新的连接表的名称需要包括所涉及的两个模型的名称,按字母顺序,并用下划线分隔(_ )“。

现在下划线是数据库表名。按照惯例,模型名称将为 FoodsUser

答案 3 :(得分:0)

已找到解决方案。我完全阅读了Containable和Join,并决定选择Join。

  

A)。 http://book.cakephp.org/view/1047/Joining-tables

     

还要感谢这个评论:

     

B)。 http://book.cakephp.org/comments/index/1325