我刚刚从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();
我是否可以使用新语法来修复此问题,以便为半径传递动态值?
感谢我能得到的任何帮助。欢呼声。
答案 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();