Я пытаюсь создать веб-сайт, посвященный прокату автомобилей, и застрял в функции поиска.
На входе будет указана дата получения и возврата, а результат должен бытьсписок автомобилей, доступных в этот период.
Это мои таблицы:
- Автомобили: идентификатор, имя, категория и т. д.
- Место размещения: идентификатор, имя клиента, client_second_name и т. д.
- Счет-фактура: id (не имеет значения), place_id, car_id, pick_up_date, drop_off_date.
Это мои отношения:
Для Car
модель:
public function invoices()
{
return $this->belongsTo('App\Invoice');
}
public function placements()
{
return $this->belongsTo('App\Placement');
}
Для Placement
модели:
public function invoice()
{
return $this->belongsTo('App\Invoice');
}
public function car()
{
return $this->hasOne('App\Car');
}
Для Invoice
модели:
public function cars()
{
return $this->hasMany('App\Car');
}
public function placements()
{
return $this->hasMany('App\Placement');
}
Я видел вопрос по этой проблеме, но я не знаю, как применить этот ответ:
$date1 = Carbon::parse('20.02.2018')->startOfDay();
$date2 = Carbon::parse('23.02.2018')->endOfDay();
$available = Car::whereDoesntHave('rentals', function($q) use($date1, $date2) {
$q->whereBetween('starting_date', [$date1, $date2])
->orWhereBetween('ending_date', [$date1, $date2])
->orWhere(function($q) use($date1, $date2) {
$q->where('starting_date', '<', $date1)
->where('ending_date', '>', $date2);
});
})
->get();
Если я попытаюсь выполнить это: $available = Car::doesntHave('placements')->get();
, только для целей тестирования, я получаю эту ошибку:
Столбец не найден: 1054 Неизвестный столбец 'cars.placements_id' в 'предложении where' (SQL: выберите * из cars
, где не существует (выберите * из placements
, где cars
. placements_id
= placements
. id
))
Можете ли вы мне помочь, пожалуйста?Если не с точным ответом, может быть, с объяснением?