0

我在 Symfony2 项目中遇到了 DQL 问题。我已经定义了 3 个实体:

  • 一个名为 Category 的实体,有两个字段:id 和 slug
  • 一个名为 SubCategory 的实体,有两个字段:id 和 slug
  • 一个名为 CategorySubCategories 的实体,具有两个字段:类别和子类别

我需要获取给定类别(slug)的子类别。我用下一个 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);

无论如何用 INNER JOINS 构建这个 DQL 吗?

在 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

在我自己看来,没有必要有第三个实体,两个就足够了(类别和子类别),只需在子类别和类别之间添加一个关联 ManyToOne,如下所述:http: //docs.doctrine-project.org/ en/2.1/reference/association-mapping.html

于 2013-08-27T07:27:12.533 回答