0

次のテーブル (記事、カテゴリ、関係) 構造があります。

articles
 >id
 >title
 >body

cats
 >id
 >title

cat_article_relations
 >id
 >cat_id
 >article_id

ここで、ユーザーが 1 つ以上のカテゴリを (チェックボックスを使用して) 選択できるページを作成しました。検索フォームを送信すると、すべてのカテゴリ ID が選択された配列が作成されます。ここで、選択したすべてのカテゴリを持つすべての記事を読み込もうとすると、問題が発生します。

使用時:

...    
->leftJoin('a.Cat_article_relations rl')
->andWhere('rl.cat_id = ?', $sg[0])
...

含まれているカテゴリを1つだけ探すので、機能します。複数の「->andWhere」を追加するとすぐに、すべてのカテゴリ ID (取得した配列内) をループして、機能しなくなります。Doctrine 1.2 のドキュメントで解決策を確認しましたが、何も見つかりませんでした。"->whereIn" などでは、必要な結果が得られません。

選択したすべてのカテゴリと関係があるすべての記事のみを取得したい。多分誰かが私にヒントを与えることができます:)

情報: 純粋な MySQL クエリの解決策があれば、私にとっても大きな助けになります。Doctrine で書く必要はありません。

ありがとう

4

1 に答える 1

0

関係を理解し​​ているかどうかはわかりませんが、これは次から変更する必要があります。

->leftJoin('a.Cat_article_relations rl')
->andWhere('rl.cat_id = ?', $sg[0])

->leftJoin('a.Cat_article_relations rl WITH rl.cat_id=?', $sg[0])
于 2012-07-05T18:04:08.803 に答える