您好,我有一个查询,很难将其转换为 Laravel 风格...
这是我的查询,实际上直接在 phpmyadmin
上运行...
SELECT id,
(
6371 * acos(
cos( radians(10.300563558355096) ) *
cos( radians( lat ) ) *
cos( radians( lng ) - radians(123.87308120727539) ) +
sin( radians(10.300563558355096) ) *
sin( radians( lat ) )
)
) AS distance
FROM rescue_units WHERE type = "hospital" HAVING distance < 25 ORDER BY distance LIMIT 0 , 5;
以及我的模型
->RescueUnit.php
<?php
class RescueUnit extends \Eloquent {
protected $table = 'rescue_units';
protected $fillable = array("name", "address", "lat", "lng", "email", "type");
}
只是不知道我在实现上是否有错误...需要改进建议...
最佳答案
没关系...我刚刚发现我想做什么...
$lat = 10.300563558355096;
$lng = 123.87308120727539;
$type = "hospital";
$markerByRadius = RescueUnit::select(
DB::raw("*,
( 6371 * acos( cos( radians(?) ) *
cos( radians( lat ) ) *
cos( radians( lng ) - radians(?) ) +
sin( radians(?) ) *
sin( radians( lat ) ) )
) AS distance"))
->whereRaw('type = ?')
->having("distance", "<", "25")
->orderBy("distance")
->setBindings([$lat, $lng, $lat, $type])
->get();
return $markerByRadius;
我只是设置了下面的绑定(bind)并且相同...
关于php - 如何在 Laravel 4 上执行此查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28210361/