#doctrine-orm #doctrine-query
Вопрос:
Я пытаюсь выбрать все сущности, для которых существует свойство отношения m-2-m.
$qb = $this->entityManager
->createQueryBuilder()
->select('attachment')
->from(Attachment::class, 'attachment')
->join('attachment.orders', 'order');
print $qb->getQuery()->getSQL();
// SELECT d0_.meta AS meta_0, d0_.type AS type_1, d0_.attachment_id AS attachment_id_2, d0_.dossier_id AS dossier_id_3 FROM dossier_attachment d0_ INNER JOIN dossier_order_attachment d2_ ON d0_.attachment_id = d2_.attachment_id INNER JOIN dossier_order d1_ ON d1_.order_id = d2_.order_id
Это, кажется, исправляет sql для моих таблиц «много-2-много».
Однако, как только я добавляю предложение where для ограничения возвращаемых вложений, я получаю исключение QueryException. Поскольку я играл с этим более двух часов, я спрашиваю, почему это исключение и как бы я его исправил?
{
"line" : 457,
"class" : "Doctrine\ORM\Query\QueryException",
"file" : "/home-projects/api-plhw-development/deploy/releases/20210222110730UTC/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php",
"function" : "dqlError",
"type" : "::",
"args" : [
"SELECT attachment FROM HF\Model\Entity\Dossier\Attachment attachment INNER JOIN attachment.orders order WHERE order.orderId = :orderId"
]
},
{
"line" : 2679,
"file" : "/home-projects/api-plhw-development/deploy/releases/20210222110730UTC/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php",
"class" : "Doctrine\ORM\Query\Parser",
"function" : "syntaxError",
"type" : "->",
"args" : [
"Literal"
]
},
{
"type" : "->",
"args" : [],
"class" : "Doctrine\ORM\Query\Parser",
"function" : "Literal",
"file" : "/home-projects/api-plhw-development/deploy/releases/20210222110730UTC/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php",
"line" : 2863
},
{
"args" : [],
"type" : "->",
"file" : "/home-projects/api-plhw-development/deploy/releases/20210222110730UTC/vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php",
"class" : "Doctrine\ORM\Query\Parser",
"function" : "ArithmeticPrimary",
"line" : 2801
},