我刚刚从CI搬到Laravel。
我有两张桌子 - 预订 - Booked_Rooms
我想要的是如果所有房间都被check_out我将使用Booked_Rooms.checkout_at决定哪个房间是空的,那么父记录应该从数据集中排除。
我试过谷歌并做了一点研究,但找不到我实际在想的东西。
我也试过了Booking:with(array('rooms',function($q){ // where query }))
,但它仍在提取父记录。我不希望通过循环遍历每个记录,然后排除记录,因为它看起来不适合性能测量。我也知道我可以通过使用连接来做到这一点,但我可以使用Eloquent ORM
摘要:如果所有scheduled_rooms的所有checkout_at列都不为null,那么父预订记录将被视为已完成,不应处于待处理的预订中。
HtlBooking模型类
public function rooms()
{
return $this->hasMany('App\BookedRoom','booking_id');
}
控制器功能
$bookings = HtlBooking::with ( 'rooms' )->with ( 'user' )
->get ();
答案 0 :(得分:2)
找到我的答案,只需使用
$bookings = HtlBooking::with('rooms')->whereHas('rooms',function($q){$q->where('checkout_at',null);})->with ( 'user' )
->get ();