是否可以使用具有子关系laravel的where子句获取数据

时间:2017-10-21 11:57:12

标签: laravel-5 laravel-eloquent

希望你们都做得很好。

我刚刚从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 ();

1 个答案:

答案 0 :(得分:2)

找到我的答案,只需使用

$bookings = HtlBooking::with('rooms')->whereHas('rooms',function($q){$q->where('checkout_at',null);})->with ( 'user' )
        ->get ();