2017-08-12 77 views
0

我正在嘗試做一些過濾,只在指定日期獲取這些記錄,下面是我的完整雄辯查詢。即使年份不正確也會返回記錄

$products = product::whereYear('created_at', '2009') 
      ->where('type_id','!=','') 
      ->orWhereNotNull('type_id') 
      ->with('type','product_warehouses.warehouse') 
      ->get(); 

目前,我只有記錄在2017年內,但它仍然給我的記錄,即使我指定日期爲'2009'。但是,如果我拿出這

->orWhereNotNull('type_id') 

該查詢的工作原理就像它給我記錄基於給定年份。任何想法,請幫助嗎?

+0

的提示是** **或'WhereNotNull'因爲現在你有一個OR條件。我想你想看看[這個答案](https://stackoverflow.com/questions/16995102/laravel-4-eloquent-where-with-or-and-or) –

+0

是的,這也是我的想法。現在就修 –

回答

0

修復,我可以只使用代替,

$products = product::whereYear('created_at', date('Y'))->where(function($query){ 
     $query->where('type_id','!=',''); 
     $query->orWhere('type_id','!=',null); 
    })->with('type','product_warehouses.warehouse')->get(); 

->where('type_id','!=','') 
->orWhere('type_id','!=',null) 
相關問題