【发布时间】:2019-09-16 05:46:36
【问题描述】:
我有以下 Eloquent 查询。
Company::has('cars')->with([
'cars', 'location' => function ($q) {
$q->nearBy(); // *** See futher
}
])->take(40)->paginate(10);
如何按距离订购公司?
*** 这是Location-model 中的 NearBy 范围:
public function scopeNearBy($query)
{
$location = json_decode(request()->cookie('location'));
$query->distance($location->lat, $location->lng); // ** Using package
return $query->orderBy('distance');
}
** 使用this package。
距离的计算正常,并且在我调用以下命令时有效。
\App\Address::nearBy()->get()
【问题讨论】:
-
你有什么错误吗?
-
请发
cars关系。 -
@JonasStaudenmeir 您可以跳过汽车关系,查询是相同的想法,但不是将汽车添加到响应中 - 这是一个hasmany关系。
-
@ChamaraAbeysekara 不,查询有效,但它根本不是按位置距离排序的。
-
@user1469734 如果它与
\App\Address::nearBy()->get()一起使用,那么您似乎在 scopeNearBy 函数中错误地映射了距离。如果是,那么您能否也提供给我们相关的模型文件?这将帮助我找到问题。
标签: laravel laravel-5 eloquent laravel-query-builder