【问题标题】:Limit results based on the dates of a related table根据相关表的日期限制结果
【发布时间】:2015-03-18 14:08:00
【问题描述】:

我有两个表,一个是 events 表,一个是 event_dates 表。

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

目前我有这个:

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

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

这会给我一个“日期”数组升序的 json 数组。有没有办法在事件查询的 where 子句中使用该数组中的最后一行?

【问题讨论】:

  • 我看到了,但我认为它没有达到我想要的效果。也许我不明白。你能举个例子吗?我认为 whereHas 只有在有日期期间才会返回。
  • 其实我想我现在明白它是如何工作的了。我试试看。
  • 现在我已经写了答案太晚了;)
  • 哈哈。好吧,我可以接受你的回答,并为此给你宝贵的互联网积分。谢谢!

标签: eloquent laravel-5


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-10-07
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 1970-01-01
    相关资源
    最近更新 更多