Laravel 5.5 - получить данные из модели, в которой у реализованной модели нет данных в конкретном месяце - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь получить данные из конкретной модели, в которой у связанной модели нет данных в текущем месяце.

Что-то вроде

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'

Теперь я хочу получить все дома, у которых нет клиентов за текущий месяц

1 Ответ

0 голосов
/ 29 октября 2018

вы можете использовать whereHas вот так

House::whereHas('consumers' , function($query){
 $query->whereMonth('created_at' , '<>' , Carbon::now()->format('m'));
})->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...