如何处理 Laravel 原始数据库模型查询中的绑定参数?

Mary-Kate Olsen
发布: 2024-11-19 02:58:02
原创
342 人浏览过

How to Handle Binding Parameters in Laravel Raw DB Queries on Models?

在模型上的 Laravel 原始数据库查询中绑定参数

在模型上的 Laravel 中使用原始数据库查询时,绑定参数可能是一个挑战。组合使用命名参数和位置参数时会出现此问题,导致错误“参数编号无效:混合命名参数和位置参数。”

要解决此问题,请考虑以下解决方案:

  1. 将原始数据库查询中的命名参数替换为问号 (?)。
  2. 使用 setBindings() 方法绑定参数值到查询。传递给 setBindings() 的数组中值的顺序应与查询中问号的顺序匹配。
$property = Property::select(
    DB::raw("title, lat, lng, ( 
        3959 * acos( 
            cos( radians(  ?  ) ) *
            cos( radians( lat ) ) * 
            cos( radians( lng ) - radians(?) ) + 
            sin( radians(  ?  ) ) *
            sin( radians( lat ) ) 
        )
   ) AS distance")
)
->having("distance", "<", "?")
->orderBy("distance")
->take(20)
->setBindings([$lat, $lng, $lat, $radius])
->get();
登录后复制

通过使用 setBindings() 方法,可以将参数值绑定到查询,允许执行需要参数化的原始数据库查询。

以上是如何处理 Laravel 原始数据库模型查询中的绑定参数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板