dql を使用して、エンティティがコレクション サブエンティティのメンバーであるかどうかを確認しようとしました
エンティティ:
product
customer
customer.orders (collection)
customer.orders.products (collection, type: product)
customer.cancellations.productContainers (collection)
customer.cancellations.productContainers.product (entity, type: product)
顧客は複数の注文を持っています。注文には複数の商品があります。顧客は複数のキャンセルを持っています。キャンセルには複数の productContainers があります。productContainer には製品があります。
問題
キャンセルされていない注文商品をすべて入手したい。
$qb->select('c, d, p')
->from('XyzBundle:Customer', 'c')
->leftJoin('c.orders', 'co')
->leftJoin('co.products', 'cop')
->leftJoin('c.cancellation', 'ca')
->leftJoin('ca.productContainers', 'cap')
->leftJoin('cap.product', 'capp')
->andWhere('cop NOT MEMBER OF capp')
ただし、ca.productContainers はコレクション フィールドであり、その supentity ca.productContainers.product ではないため、これは機能しません。したがって、次のエラーが発生します。
CRITICAL - Uncaught PHP Exception Doctrine\ORM\Query\QueryException:
"[Semantical Error] line 0, col 414 near 'product': Error: Invalid PathExpression.
Must be a CollectionValuedAssociationField." at
/vagrant/vendor/doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php line 4 9
これを解決する方法はありますか?