将 Laravel 原始查询中的参数与模型绑定
在 Laravel 中,将参数绑定到模型上使用的原始数据库查询可能会很棘手。但是,这里有一个可以提供帮助的解决方法:
问题:
由于命名参数和位置参数混合,以下查询失败并出现“无效参数号”错误:
$query = DB::raw("... :lat, :lng, (calc) AS ...")->having("calc", "<", :radius);
解决方案:
利用 setBindings() 方法手动设置查询绑定,覆盖混合参数问题:
$query = DB::raw("... ?, ?, (calc) AS ...")->having("calc", "<", "?"); $query->setBindings([$lat, $lng, $radius]);
说明:
DB::raw() 语句使用问号作为位置参数,允许您使用 setBindings() 而不是命名绑定来设置它们。这种方法允许您使用查询生成器的流畅界面,而无需担心参数混合。
以上是如何将 Laravel 原始查询中的参数与模型绑定的详细内容。更多信息请关注PHP中文网其他相关文章!