Я пытаюсь получить данные из конкретной модели, в которой у связанной модели нет данных в текущем месяце.
Что-то вроде
Select * FROM houses
JOIN customers
WHERE "there is no customer for the current month;
Но в Ларавеле.
Я попробовал несколько вещей, но не смог добиться цели.
У меня есть house
таблица.
В доме много столов customers
.
Теперь я хочу получить все houses
там, где нет customer
на текущий месяц.
Я пробовал что-то вроде:
House::whereMonth('House.customers.created_at', Carbon::now()->format('m'))->get();
Одно решение, которое сработало для меня:
$houses= House::all();
$customers = Customer::whereNotExists(function($query) use ($houses){
$query->whereMonth('created_at', Carbon::now()->format('m'));
})->get();
У кого-нибудь есть более чистый способ?
Структура таблицы SQL:
клиент:
'id', 'house_id', 'name', 'created_at','updated_at'
домов:
'id', 'name', 'created_at','updated_at'
Теперь я хочу получить все дома, у которых нет клиентов за текущий месяц