根据两列的组合值检索模型?
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 不要转义这部分查询。
我需要一个相对简单的语句,在该语句中,我根据所述模型的两列(小时和分钟)对我的模型进行排序。
以下作品
$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 不要转义这部分查询。