【发布时间】:2013-08-19 22:27:24
【问题描述】:
我在 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 的吗?
【问题讨论】:
标签: symfony doctrine-orm inner-join dql