【发布时间】:2020-08-12 02:43:03
【问题描述】:
我有一个带有字段的预订表:
- 姓名 |字符串
- 来自 |日期时间
- 到 |日期时间
我选择其中一些预订并将它们显示为列表。我还会检查之前的预订是否相隔不到 30 天。
我通过查询每个预订的前一个预订来做到这一点:
@if ($booking->previousBooking()) // Simplified version but you get the idea
底层代码:
public function previousBooking()
{
return Booking::where('from', '<', $this->from)
->orderByDesc('from')
->first();
}
您可能已经猜到了:它为每个预订添加了一个查询。
最好的情况是急切地加载“以前的预订”(with),这样就可以像这样访问它:
$booking->previous_booking->from
有没有办法做到这一点?
约束:
- 我无法查询所有预订,按“from”排序,然后只获取上一个索引
【问题讨论】:
标签: laravel eloquent laravel-6 eager-loading