Добрый день,
Есть 2 модели:
Place (место для возможной аренды)
--id
и
Lease (аренда)
--id
--place_id
--started_at
--finished_at
Суть такая, что любой
Place можно брать в аренду сколько угодно раз, главное чтобы это происходило не в период существующей аренды.
Хочу запросом вытащить все
Place, которые:
1. В указанный период не находятся в стадии аренды.
2. Вообще ни разу не взятые в аренду.
Набросок:
public function search(Request $request)
{
$started_at = $request->query('started_at');
$finished_at = $request->query('finished_at');
$places = Places::latest();
if(isset($started_at) && isset($finished_at)) {
$places->whereHas('leases', function($q) use ($started_at, $finished_at) {
$q
->where('status', '<>', StatusesLeaseHelper::STATUS_WAIT)
->where(function ($qq) use ($started_at, $finished_at) {
$qq->where(function ($qqq) use ($started_at, $finished_at) {
$qqq
->where('started_at', '>', $started_at)
->where('started_at', '>', $finished_at);
})->orWhere(function ($qqq) use ($started_at, $finished_at) {
$qqq
->where('finished_at', '<', $started_at)
->where('finished_at', '<', $finished_at);
});
});
});
}
return $places->get();
}
Насколько я понимаю, данный фрагмент отвечает условию 1. т.к. затрагивается период к связи leases (модель
Lease), но не учитываются
places (пункт 2.), для которых не было ни одной аренды. Подскажите пожалуйста - как можно решить сей момент?