CakePHP:为用户检索HasandBelongToMany数据

CakePHP:为用户检索HasandBelongToMany数据,cakephp,many-to-many,cakephp-1.3,Cakephp,Many To Many,Cakephp 1.3,我想返回在HasandBelongToMany关系中只属于1个用户的数据。我不确定这里的条件: 我得到警告: 警告512:SQL错误:1054:where子句中的未知列“UsersFood.user\u id” 有人能澄清一下吗 return $this->find('all', array('conditions' => array( 'Food.id' => 'Usersfood.food_id', 'User

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

警告512:SQL错误:1054:where子句中的未知列“UsersFood.user\u id”

有人能澄清一下吗

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

                )

     )

   );
如果设置了$HASANDBELONGTOMANY,则不需要指定'Food.id'=>Usersfood.Food\u id'和'Usersfood.user\u id'=>$userid,
`

确保已根据本页正确定义关系

然后看看

特定用户使用该用户的食物

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

还是每个用户都有食物

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

应该是FoodUser而不是UsersFood吗

假设您遵循约定,这是本书中的内容:这个新联接表的名称需要包括两个相关模型的名称,按字母顺序,并用下划线分隔


现在下划线表示数据库表名。按照约定,找到解决方案后,模型名称将为FoodsUser。我仔细阅读了Containable和Join,并决定使用Join

A

还要感谢这一评论:

B


令人惊讶的是,我得到了相同的错误:“where”子句中的未知列“UsersFood.user\u id”我根据您的更改了您是否设置了HasandBelongToMany?是的,我已经设置了关系。回答您的问题,不,当我们烘焙具有HABTM关系的表时,我们只能命名主表,而不能命名桥接表。你知道aroc_acos的事吗?这不是按字母顺序吗?我不知道你在读哪本手册,但官方的手册对字母命名惯例非常明确。除非您有经验或有特殊的业务需要,否则我建议您遵循该惯例。我广泛使用了HABTM和ACL。aroc_acos sic是唯一以这种方式键入的反向alpha。在我的应用程序中,它是acos_aros&acosarow你在说什么Leo??我说你烤的时候。。你能把上面的评论再读一遍吗?如果我们运行shell,ACL示例也是如此。如果你是手工操作,那么我们做的事情就不同了。就这些。好了,现在我到家了,我刚刚创建了阿尔法、阿尔法和齐塔人的表格。我“烘焙”了这些模型,一路上有人问我想把所有的东西都称为什么,我想使用哪些表格。别名是Alpha、AlphasZeta和Zeta。整件事做得很好。正如我所描述的。正如书中所描述的,利奥,对不起,你做的有什么不同吗?当您使用HABTM关系创建两个表时,您不必自己创建联接表,我想知道您为什么这样做。无论如何,问题已经解决了。试着回答你的疑问;好的,你有阿尔法和齐塔人。每个都对应一个HABTM。所以当你烘焙时,你会分别烘焙阿尔法和齐塔人。您不需要烘焙join/bridge表,在您的例子中,您命名为alphas_zetas。我希望我能澄清您的疑问,为什么我的表是这样命名的,我也不觉得非字母顺序有什么大问题。请注意手册中这段代码中的大写:“recipes tag.tag_id”=>124记住,PHP是区分大小写的。还要注意字母顺序;我不太明白你的答案,但是谢谢。如果可能的话,我希望你能写出正确的答案?可容纳部分是一个例子很少的部分。没有一个真正适用于我在这里的工作。我应该改用join吗?
return $this->find('all', array('conditions' => array(
                 'User.id' => $userid
                )
     )

   );