2017-11-18 41 views
1

我除了第一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

回答

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

+0

李,我在第二個方法(首先在函數中)預先給了什麼?我不能跑(沒什麼) - > – user163831

+0

對不起,我有一個錯字。請再看一下。但不知道你的意思是什麼?沒有任何查詢。它封閉了前兩個小組。如果沒有,則返回到orWhere查詢。 – Lee

+0

oh $查詢當然對不起 – user163831

相關問題