Doctrine 作为返回值的多对多属性原则

Doctrine 作为返回值的多对多属性原则,doctrine,doctrine-orm,many-to-many,Doctrine,Doctrine Orm,Many To Many,我有一个两个实体的餐厅和美食,餐厅与美食有着多对多的关系,有趣的是,美食 所以如果我有两个餐厅(rest1,rest2)和两种烹饪(印度菜,中国菜),而这两个餐厅都只有印度菜 rest1 indian rest2 indian 我想通过查询生成器执行一个DQL查询,该查询返回一个菜系列表以及分配给该菜系的餐厅数。理论上是这样的 $qb->select('rc AS cuisine, COUNT(r) AS restaurantCount') ->from('Restaur

我有一个两个实体的餐厅和美食,餐厅与美食有着多对多的关系,有趣的是,美食

所以如果我有两个餐厅(rest1,rest2)和两种烹饪(印度菜,中国菜),而这两个餐厅都只有印度菜

rest1  indian
rest2  indian
我想通过查询生成器执行一个DQL查询,该查询返回一个菜系列表以及分配给该菜系的餐厅数。理论上是这样的

$qb->select('rc AS cuisine, COUNT(r) AS restaurantCount')
   ->from('Restaurant', 'r')
   ->join('r.cuisines', 'rc')
   ->addGroupBy('rc');
因此,我想

cuisine: indian restaurantCount: 2

我知道这将给出一个错误,因为需要返回主实体

我也知道,通过创建和使用多对多的倒数,这是可能的,但我试图避免给菜肴赋予餐厅属性,以避免双向关系的复杂性


使用餐厅作为主选择表是否可能获得预期结果?

以一种干净的面向对象的方式,如果不使用双向关系,我认为这是不可能的。
这没有多大意义,你选择的是餐馆,但返回其他东西

但是,您始终可以将原始SQL用于此类操作。
IMHO的解决方案比为此而强制建立双向关系更快、更干净