使用 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 是集合字段,而不是它的附属 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
任何建议如何解决这个问题?