作为标题,我正在努力获得SQL查询的正确DQL版本(或通信查询构建器)。
涉及的表格如下: SQL Graphic Schema
对于按ID排序的每件商品,我需要对其按照“ord'”排序的图片进行检索。
这是SQL中的正确查询(希望......顺便说一下:P)。
hyperParamSpace = pd.DataFrame([row for row in itertools.product(*param_grid.values())],
columns=param_grid.keys(), dtype=object)
这些是实体(只有关系):
SELECT
PG.product_id,
PIJG.img_id,
PI.uri,
PI.ord
FROM
ProductGeneral PG
JOIN
ProductImgJoinGeneral PIJG ON PG.product_id = PIJG.product_id
JOIN
ProductImg PI ON PIJG.img_id = PI.img_id
ORDER BY
PG.product_id ASC,
PI.ord ASC;
任何帮助?
答案 0 :(得分:0)
PIJG表在您的Doctrine映射中没有映射的实体,因此您无法对其进行SELECT。但是PIJG.img_id = PI.img_id
,所以你可以这样做:
$qb = $this->productGeneralRepository->createQueryBuilder('PG')
->select('PG.product_id, PI.img_id, PI.uri, PI.ord')
->innerJoin('PG.img', 'PI')
->addOrderBy('PG.product_id', 'ASC')
->addOrderBy('PI.ord', 'ASC');
然后,如果您想要原始DQL,只需获取$qb->getDql()
。由于您的Doctrine映射, innerJoin 方法会自动执行双JOIN