OK, sau một số thử nghiệm, đây là giải pháp mà tôi đã đưa ra:
$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();
Về cơ bản, setBindings
phải được gọi trên truy vấn. Ước gì điều này được ghi lại!