为什么我的Laravel集合不会按日期正确过滤?

时间:2017-11-18 01:40:41

标签: laravel-5 eloquent

我有

  $dt = Carbon::now();
  $b4 = Carbon::now()->addWeeks(12);

  Event::orderBy('date', 'desc')
    ->where('date', '<', $b4)
    ->where('ends', '>=', $dt)
    ->orWhere('date', '>=', $dt)
    ->take(3)
    ->get();

除第一个where外,所有过滤器都有效。我首先尝试orWhere,没有骰子。它显示日期为2018年8月的项目。帮助?

1 个答案:

答案 0 :(得分:0)

我认为您需要将您的查询分组,即

  $dt = Carbon::now();
  $b4 = Carbon::now()->addWeeks(12);

  Event::orderBy('date', 'desc')
    ->where(function ($query) use ($dt, $b4) {
        $query->where('date', '<', $b4->format('Y-m-d'))
        ->where('ends', '>=', $dt->format('Y-m-d'));
    })
    ->orWhere('date', '>=', $dt->format('Y-m-d'))
    ->take(3)
    ->get();

https://laravel.com/docs/5.5/queries#parameter-grouping