可能有人幫助我怎麼能做到以下Laravel - 雄辯複雜的where子句
->where("YEAR(date_field)", '>=', 2014)
date_field
這樣的事情是一個MySQL的日期,如:2014-03-22
可能有人幫助我怎麼能做到以下Laravel - 雄辯複雜的where子句
->where("YEAR(date_field)", '>=', 2014)
date_field
這樣的事情是一個MySQL的日期,如:2014-03-22
->whereRaw('YEAR(date_field) >= ?', array(2014))
This throws:argument 2 passed to Illuminate \ Database \ Query \ Builder :: whereRaw()must be a array,string given – user3415803
Sorry - fixed my answer 。另一種選擇是Antonios答案。 – Laurence
感謝您的快速響應,我需要實現您所寫的內容。 – user3415803
越少原始的你使用更好,Laravel使用Carbon作爲它的DateTime內部類,所以你可以:
$year = \Carbon\Carbon::createFromDate(2014)->firstOfYear();
它會返回一個日期是這樣的:
2014-01-01 00:00:00
因此,如果您是在今年過濾,你需要在2014年開始的所有記錄,你可以這樣做:
->where('date_field', '>=', $year)
不要忘記你可以創建幫助功能或方法:
public function year($year)
{
return \Carbon\Carbon::createFromDate(2014)->firstOfYear();
}
And t母雞剛:
->where('date_field', '>=', year(2014))
我的問題是,我只需要date_field的年份,比如''YEAR(date_field)'' – user3415803
您是按年份過濾還是不過濾?如果你是,你當然可以使用日期。 –
我想完全實現這個(剛剛得到了答案):' - > whereRaw('YEAR(date_field)> =?',array(2014))',我不明白這將如何使用您的解決方案或也許我們誤解了彼此。 – user3415803
原料當然是一種選擇,但由於v4.1.25你可以用下面的方法,以及:
->whereYear('column', '>=', 2014);
// and for month or day:
->whereMonth('column', '>=', 5);
->whereDay('column', '>=', 15);
不幸的是,我正在開發的項目在v4.1.24中,但很好知道:) – user3415803
通過我已經解決了時間使用這個:' - > whereRaw ('YEAR(date_field)> =?',array(2014))' – user3415803