我需要一个相对简单的陈述,我在模型上根据两列,小时和分钟对模型进行排序。
以下作品
$recipes->where('minutes','>', $minTime)->get();
但我真正想做的是
$recipes->where('hours * 60 + minutes','<', $minTime)->get();
可悲的是这个语法不可用,我一直在搞乱其他几个解决方案,但我一直无法解决它。
我希望有一些方向,因为我已经卡住了!
答案 0 :(得分:2)
默认情况下,Laravel在where语句中使用绑定并将其转义。要进行计算等,请使用whereRaw
:
$recipes->whereRaw('hours * 60 + minutes < '.$minTime)->get();
但是现在您的查询容易受到SQL注入的影响,以避免手动创建绑定:
$recipes->whereRaw('hours * 60 + minutes < ?', [$minTime])->get();
您可以在普通whereRaw
函数中使用DB::raw()
而不是where
:
$recipes->where(DB::raw('hours * 60 + minutes'),'<', $minTime)->get();
这告诉Laravel不要逃避查询的这一部分。