У меня следующая структура
Orders
- id
- users_id
- orderPaid (can be 1 or 0)OrdersItems
- id
- order_id
- events_id
- qtyevents
- id
- name
- (and others)
Отношения
Один заказ имеет много заказов. Один Заказ принадлежит к Заказу.
Одно событие имеет много элементов заказа. Один Заказ относится к Событию.
Что мне нужно сделать, это:
Получить все события со всеми платными (!) Кол-во. Поэтому, если у меня есть 2 заказа с двумя предметами (всего 4), но оплачен только один заказ, кол-во шоу = 2 вместо 4
Код до сих пор:
$events = Main::with(['clients','events.orderitems'])->where('id', $id)->first();
foreach($events->events as $events) {
$events->orderscount = count($events->orderitems);
}
дает мне успешно общее количество, но мне просто нужно количество, если orderPaid = 1
Как я могу это сделать? Каждая помощь ценится каждый
Попробуйте использовать Eloquent нетерпеливые ограничения нагрузки (это добавит подзапрос):
$events = Main::with(['clients', 'events.orderitems' => function($query) {
$query->whereIn('order_id', function($query) {
$query->select('id')->from('orders')->where('orderPaid', 1);
});
}])->where('id', $id)->first();
Других решений пока нет …