Laravel 4.1 - > 4.2打破查询绑定

时间:2015-01-12 08:37:00

标签: php database laravel query-builder

我刚刚从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();

我是否可以使用新语法来修复此问题,以便为半径传递动态值?

感谢我能得到的任何帮助。欢呼声。

1 个答案:

答案 0 :(得分:1)

为什么不呢?

$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();