Symfony - doctrine createQueryBuilder multiple Joins

时间:2017-11-07 13:37:26

标签: php mysql symfony doctrine-orm

我在MySQL中有这个查询,我想申请进入学说

SELECT * FROM ads_list AS al LEFT JOIN (ads_category AS ac, ads_category_main AS acm) ON (ac.id = al.category_id AND ac.parent_cat_id = acm.id)

你知道怎么用这个与学说一起使用吗? 我在存储库中使用它 参数转到ads_category_main 所以我试图选择带有ads_list的{​​{1}},并且每个类别都有一个存储在category

中的parentCategory

SQL

ads_category_main
到目前为止,我得到了

CREATE TABLE `ads_list` (
`id` int(11) NOT NULL,
`category_id` int(11) DEFAULT NULL,
`title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`content` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
`posted_at` date NOT NULL,
`post_xpr` date NOT NULL,
`agency_id` int(11) DEFAULT NULL,
`slug` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

CREATE TABLE `ads_category` (
`id` int(11) NOT NULL,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`parent_cat_id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


CREATE TABLE `ads_category_main` (
`id` int(11) NOT NULL,
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

如何在控制器中使用输出数据?

1 个答案:

答案 0 :(得分:0)

只要您拥有相关的实体,就可以像

一样进行连接
->join/leftJoin('entity.foreign_key','alias')

如果恩赐没有关系,你必须指定" ON"加入的选项。

之后你有办法处理结果。

$qb->getQuery()->getResult();
$qb->getQuery()->getArrayResult();