有人可以帮助我如何在下面完成这样的事情
->where("YEAR( date_field )", '>=', 2014)
date_field
是一个mysql日期,如:2014-03-22
答案 0 :(得分:2)
->whereRaw('YEAR(date_field) >= ?', array(2014))
答案 1 :(得分:1)
使用越少越好,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();
}
然后只是:
->where('date_field', '>=', year(2014))
答案 2 :(得分:1)
Raw当然是一个选项,但是从v4.1.25开始,你也可以使用以下方法:
->whereYear('column', '>=', 2014);
// and for month or day:
->whereMonth('column', '>=', 5);
->whereDay('column', '>=', 15);