0

Symfony2 プロジェクトの DQL に問題があります。3 つのエンティティを定義しました。

  • id と slug の 2 つのフィールドを持つ Category という名前のエンティティ
  • id と slug の 2 つのフィールドを持つ SubCategory という名前のエンティティ
  • カテゴリとサブカテゴリの 2 つのフィールドを持つ CategorySubCategories というエンティティ

指定されたカテゴリ (スラッグ) のサブカテゴリを取得する必要があります。次の DQL で取得しました:

$em ->createQuery('SELECT subcat FROM SubCategory subcat WHERE subcat.id IN
                                        (SELECT IDENTITY(csc.subCategory) FROM  CategorySubCategories csc WHERE csc.category IN
(SELECT cat FROM Category cat WHERE cat.slug = :category))')
                    ->setParameter('category', $category);

この DQL を INNER JOINS で構築する方法はありますか?

たとえば、MysQL では次のようになります。

SELECT subcat.slug FROM Category cat INNER JOIN CategorySubCategories csc ON (cat.id = csc.category_id) INNER JOIN SubCategory subcat ON (csc.subcategory_id = subcat.id) WHERE cat.slug LIKE "$category"

DQL に変換する方法はありますか?

4

1 に答える 1

0

私自身の意見では、3 番目のエンティティを持つ必要はなく、2 つ (Category と SubCategory) で十分であり、ここで説明されているように、SubCategory と Category の間に ManyToOne 関連付けを追加するだけです: http://docs.doctrine-project.org/ ja/2.1/reference/association-mapping.html

于 2013-08-27T07:27:12.533 に答える