根据相关 table 的日期限制结果

Limit results based on the dates of a related table

我有两个table,一个是事件table,一个是event_dates table.

我想做的是根据 event_dates 限制我的活动的结果数量。例如:如果当前日期超过事件的最后日期,则不会返回。

目前我有这个:

$events = Events::with(['dates'=>function($query)
            {
                $query->orderBy('event_date','asc');
            }])->get();

return response()->json($events);

这将给我一个 json 数组和一个 "dates" 数组升序。有没有办法在事件查询的 where 子句中使用该数组的最后一行?

whereHas 在正确的条件下应该可以工作:

$today = Carbon::now()->toDateString();
$events = Events::whereHas('dates', function($q) use ($today){
    $q->where('event_date', '>=', $today);
})->get();

如果您仍想急切加载关系,显然只需添加 with()...