2011-02-01 11 views
0

hasAndBelongsToMany関係で1人のユーザーにしか属していないデータを返したいとします。私はここでの条件についてはよく分からない: 私は警告取得しています:CakePHP:ユーザーのhasAndBelongsToManyデータの取得

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 

       ) 

    ) 

    ); 
+0

注意マニュアルからこのスニペットで大文字:('RecipesTag.tag_id' => 124)PHPは、大文字と小文字が区別され、覚えておいてください。 – Leo

+0

アルファベットにも注意してください;) – Leo

答えて

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

    ); 

あなたが$hasAndBelongsToManyセットを持っている場合、あなたはその後、このページごとに適切にhttp://book.cakephp.org/view/83/hasAndBelongsToMany-HABTM

を関係が定義されていることを確認してください'Food.id' => 'Usersfood.food_id','Usersfood.user_id' => $userid, `

+0

驚いたことに私は同じエラーが発生しています: '不明な列 'where節' UsersFood.user_id'あなたに合わせて変更しました – woel

+0

'hasAndBelongsToMany'を設定しましたか? –

+0

はい私は関係を設定しました。 – woel

0

を指定する必要はありません見てくださいhttp://book.cakephp.org/view/474/Containable

その特定のユーザーrs food。食品と

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

またはすべてのユーザごと

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

+0

私はあなたの答えで遠くになっていないが、ありがとう。可能であれば、正しいものを書くことができたらいいなと思いますか?収容可能な部分は、いくつかの例があるものです。私の仕事には本当に当てはまりません。代わりに結合を使用する必要がありますか? – woel

0

それは、FoodsUserではなく、UsersFoodではないでしょうか?

慣例に従い、これは帳からのものです。「この新しい結合テーブルの名前には、対応する両方のモデルのの名前をアルファベット順にに含め、アンダースコア(_)で区切る必要があります。

ここでアンダースコアはデータベーステーブル名です。大会に続いて、モデル名はになります。食品ユーザー

+0

あなたの質問に答えるために、いいえ、HABTM関係のあるテーブルをベイクすると、ブリッジテーブルではなくメインテーブルに名前を付けるだけです。 aroc_acosについて知りましたか?アルファベット順ではありませんか? – woel

+0

あなたが読んでいるマニュアルはわかりませんが、公式のものはアルファベットの命名規則にはっきりとしています。あなたが経験していない、または特定のビジネスが別途必要な場合を除いて、私はその条約に従うことをお勧めします。私はHABTMとACLを広く使用してきました。 aroc_acos(sic)は、そのようにタイプすれば逆アルファです。私のアプリケーションではacos_aros&AcosAroです。 – Leo

+0

あなたは何をレオと話していますか?私はあなたが焼くときに言った(..)上記のコメントをもう一度読んでもらえますか?シェルを実行するとACLの例にもなります。あなたが手動でやっているならば、私たちはやり方を変えています。それで全部です。 – woel

関連する問題