我有两种型号房间和预订。
模型如下:
class Room extends Model {
public function bookings() {
return $this->hasMany(Booking::class);
}
}
class Booking extends Model {
public function room() {
return $this->belongsTo(Room::class);
}
}
我想使用laravel的雄辩来选择所有在指定日期没有预订的房间,比如2018-06-07。
我尝试了以下内容:
$available_rooms = Room::whereHas('bookings', function($query) {
$query->where('date', '!=', '2018-06-07');
})->get();
但是,这只会返回有预订的房间而不是那些根本没有预订的房间。
感谢您的帮助。
答案 0 :(得分:0)
您可以使用doesntHave()
$available_rooms = Room::doesnthave('bookings','or' ,function($query) {
$query->where('date', '!=', '2018-06-07');
})->get();
它将返回当天未预订的房间。
有关详细信息,您可以https://laravel.com/api/5.4/Illuminate/Database/Eloquent/Builder.html#method_doesntHave
希望这有帮助。
答案 1 :(得分:0)
您可以使用doesntHave
$available_rooms = Room::doesntHave('bookings', function($query) {
$query->where('date', '!=', '2018-06-07');
})->get();