2015-03-13 34 views
0

我需要一个相对简单的语句,在此模型上根据两列(小时和分钟)对模型进行排序。基于两栏的组合值检索模型?

以下工作

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

但我真正想要做的是

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

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

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

回答

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