我不明白哪里出错了。当我添加这个
where('units.solddate','> =','DATE_SUB(CURDATE(),INTERVAL 30 DAY)')
where子句和我的结果为空。我试过phpMyadmin,它确实返回结果。
$query= (tables)
->select(DB::raw('SUM(units.price) as price, DATE(units.solddate) as date, DAY(units.solddate) as day'))
->where('units.solddate','>=','DATE_SUB(CURDATE(), INTERVAL 30 DAY)')
->where('units.solddate','<=','NOW()')
->groupBy('date')
->get();
请建议。
答案 0 :(得分:2)
约束不起作用的原因是Eloquent采用您与字面比较的值,在需要时将其转义然后在查询中使用。所以,如果你这样做
->where('units.solddate','<=','NOW()')
实际上,您将 units.solddate 与strin NOW()进行比较,例如:
... WHERE units.solddate <= 'NOW()'
如果要在查询中使用MySQL函数,则必须明确告诉Eloquent / QueryBuilder您是指通过使用 DB :: raw()来包装值所提供的原始值。
以下内容对您有用:
->where('units.solddate','>=',DB::raw('DATE_SUB(CURDATE(), INTERVAL 30 DAY)'))
->where('units.solddate','<=',DB::raw('NOW()'))