我在这个例子中有两个课程 – DeliveryMethod和Country.他们之间有着多对多的关系.
我想做的是选择没有任何国家映射到它们的所有DeliveryMethod.
我可以做相反的事情,那就是选择至少有一个国家的所有交货方式 –
SELECT m FROM DeliveryMethod m JOIN m.countries
但是我不知道如何选择国家字段是空的.在纯sql中,我将执行以下操作(deliverymethod_country是链接表):
SELECT m.* FROM deliverymethods m LEFT JOIN deliverymethod_country dc ON dc.deliverymethod_id = m.id WHERE dc.deliverymethod_id IS NULL
但是,与此相反的任何DQL都不起作用,例如:
SELECT m FROM DeliveryMethod m LEFT JOIN m.countries WHERE m.countries IS NULL
哪个给我这个错误:
[Syntax Error] line 0,col 75: Error: Expected end of string,got 'm'
那这个呢?假设$qb是您的查询构建器实例
$qb->select('m') ->from('DeliveryMethods','m') ->leftJoin('m.countries','c') ->having('COUNT(c.id) = 0') ->groupBy('m.id');
这将给你与国家相关联的DeliveryMethods和关联国家的数量为0