为什么我的Laravel收藏不能按日期正确过滤?

为什么我的Laravel收藏不能按日期正确过滤?

问题描述:

我除了第一where为什么我的Laravel收藏不能按日期正确过滤?

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

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

所有过滤器工作。我首先尝试了orWhere,没有骰子。它显示的日期在2018年8月。帮助?

+0

你能写,你想拥有的SQL查询?我看到你用这段代码得到的结果没有错。 –

+0

从现在开始的12个星期将是2月份,所以8月份超出了我的指定范围。 – user163831

我认为你需要将你的查询分组即可。

$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

+0

李,我在第二个方法(首先在函数中)预先给了什么?我不能跑(没什么) - > – user163831

+0

对不起,我有一个错字。请再看一下。但不知道你的意思是什么?没有任何查询。它封闭了前两个小组。如果没有,则返回到orWhere查询。 – Lee

+0

oh $查询当然对不起 – user163831