Я тоже борюсь с подобным сценарием в Учении.Rails испортил мне отношения has_many :through =>
, что делает подобные вещи тривиальными.
Вы правы, вам нужны три объекта: Магазины, Предметы, ItemsAtShops, использующие двойные отношения ManyToOne.
Я бы предположил, что ItemsAtShop будет выглядеть следующим образом:
class ItemsAtShop
{
private $shop;
private $items;
private $quantity;
}
Что касается запросов, вам нужно качать объединения:
$queryBulder->select('ias')
->from(ItemsAtShop, 'ias')
->leftJoin('ias.Item', 'i')
->leftJoin('ias.Shop', 's')
->where('s.id = :shop_id')
->andWhere('i.price <= :my_price')
->orderBy('i.price', 'DESC');
Помните, что при использовании DQL вы 'обычно запрашивают целые объекты сущностей, которые самостоятельно выбирают их отношения.Это должно привести к коллекции ItemsAtShop
, которую вы можете перебрать.
Я мог бы немного поиграть, чтобы выяснить правильный запрос.Я буду часто начинать с SQL-запроса, который, как я знаю, работает, и переводить его на DQL.