Laravel 4.1 -> 4.2 打破查询绑定

Laravel 4.1 -> 4.2 breaking Query bindings

我刚从 4.1 升级到 4.2,一些查询出现问题。有没有办法在不扩展任何内容的情况下重新编写此查询?

这在 Laravel 4.1 中可以正常工作,但在 4.2 中却不行。

     $stores = Store::select(
            DB::raw("id,name,
                          ( 3959 * acos( cos( radians(?) ) *
                            cos( radians( lat ) )
                            * cos( radians( lng ) - radians(?)
                            ) + sin( radians(?) ) *
                            sin( radians( lat ) ) )
                          ) AS distance"))
            ->having("distance", "<", "?")
            ->orderBy("name")
            ->setBindings([$lat, $lng, $lat,$radius])
            ->get();

如果我像这样在半径中硬编码,我尝试将其分解并让它工作:

     $stores = Store::select(
            DB::raw("id,name,
                          ( 3959 * acos( cos( radians(?) ) *
                            cos( radians( lat ) )
                            * cos( radians( lng ) - radians(?)
                            ) + sin( radians(?) ) *
                            sin( radians( lat ) ) )
                          ) AS distance"))
            ->having("distance", "<", 25)
            ->orderBy("name")
            ->setBindings([$lat, $lng, $lat])
            ->get();

是否有新的语法可以用来解决这个问题,以便我可以为半径传递动态值?

感谢我能得到的任何帮助。干杯。

为什么不只是这个?

$stores = Store::select(
        DB::raw("id,name,
                      ( 3959 * acos( cos( radians(?) ) *
                        cos( radians( lat ) )
                        * cos( radians( lng ) - radians(?)
                        ) + sin( radians(?) ) *
                        sin( radians( lat ) ) )
                      ) AS distance"))
        ->having("distance", "<", $radius)
        ->orderBy("name")
        ->setBindings([$lat, $lng, $lat])
        ->get();