2

私にはレストランと料理の2つのエンティティがあり、レストランは、おかしなことに、料理という名前の料理と多対多の関係にあります。

つまり、2つのレストラン(rest1、rest2)と2つの料理(インド料理、中華料理)があり、両方のレストランにインド料理しかない場合

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 に答える