2

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

因此,如果我有两家餐厅(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


我知道这会产生错误,因为需要返回主要实体。

我也知道这可以通过创建和使用多对多的逆来实现,但我试图避免将美食赋予餐厅属性以避免双向关系的复杂性。

将餐厅作为主要选择表是否可以获得所需的结果?

4

1 回答 1

0

以干净的 OOP 方式,不使用双向关系,我认为这是不可能的。
这没有多大意义,您是精选餐厅,但返回的是其他东西。

但是,您始终可以将原始 SQL 用于此类事情。
恕我直言,比为此强制建立双向关系更快、更清洁的解决方案。

于 2013-03-01T00:39:41.403 回答