如何将参数绑定到模型上使用的Laravel中的原始数据库查询?

回覆,

我有以下查询:

$property = 

Property::select(

DB::raw("title, lat, lng, (

3959 * acos(

cos( radians(:lat) ) *

cos( radians( lat ) ) *

cos( radians( lng ) - radians(:lng) ) +

sin( radians(:lat) ) *

sin( radians( lat ) )

)

) AS distance", ["lat" => $lat, "lng" => $lng, "lat" => $lat])

)

->having("distance", "<", $radius)

->orderBy("distance")

->take(20)

->get();

它不起作用:Invalid parameter number: mixed named and positional parameters

有谁知道技巧或解决方法(我显然可以编写完整的查询,但更喜欢使用流利的生成器)。

回答:

好,经过一些实验,这是我想出的解决方案:

$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中的原始数据库查询? 的全部内容, 来源链接: utcz.com/qa/399155.html

回到顶部