Symfony - doctrine createQueryBuilder multiple Joins



我在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所以我正在尝试选择带有categoryads_list,每个类别都有一个存储在ads_category_main中的父类别

.SQL

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;

到目前为止,我得到了

    public function findAllP($main)
    {
    return $this->createQueryBuilder('pl')
        ->leftJoin('pl.category', 'al')
        ->where('al.parentCat = :pc')
        ->setParameter('pc', $main)
        ->getQuery()
        ->execute();
    }

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

只要你有相关的实体,你就可以像这样做连接

->join/leftJoin('entity.foreign_key','alias')

如果关联性不相关,则必须指定连接的"ON"选项。

之后,您有一些方法可以处理结果。

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

相关内容

  • 没有找到相关文章

最新更新