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

Retrieving a model based on combined value of two columns?

我需要一个相对简单的语句,在该语句中,我根据所述模型的两列(小时和分钟)对我的模型进行排序。

以下作品

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

但我真正想做的是

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

遗憾的是这个语法不可用,我一直在研究其他几个解决方案,但我一直无法解决它。

我被卡住了,希望得到一些指导!

默认情况下 Laravel 在 where 语句中使用绑定并转义它们。要进行计算等,请使用 whereRaw:

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

但是现在您的查询容易受到 SQL 注入的攻击,以避免手动创建绑定:

$recipes->whereRaw('hours * 60 + minutes < ?', [$minTime])->get();

除了whereRaw你还可以在正常的where函数中使用DB::raw()

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

这告诉 Laravel 不要转义这部分查询。