Laravel — три отношения

У меня следующая структура

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

Как я могу это сделать? Каждая помощь ценится каждый

4

Решение

Попробуйте использовать 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();
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]