根据两列的组合值检索模型?

时间:2015-03-13 15:30:04

标签: sql laravel eloquent laravel-5

我需要一个相对简单的陈述,我在模型上根据两列,小时和分钟对模型进行排序。

以下作品

$recipes->where('minutes','>', $minTime)->get();

但我真正想做的是

$recipes->where('hours * 60 + minutes','<', $minTime)->get();

可悲的是这个语法不可用,我一直在搞乱其他几个解决方案,但我一直无法解决它。

我希望有一些方向,因为我已经卡住了!

1 个答案:

答案 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不要逃避查询的这一部分。