1
我有點失落,我試圖計算距離和排序任務最接近登錄的用戶。問題在於我的lat和lng位於另一個表格(Buildings
)中,該表格被定義爲Mission
中的關係。 我正在使用Laravel/Lumen的QueryBuilder從數據庫中提取記錄。通過關係列的雄辯排序
$orderBy = "DEGREES(ACOS(COS(RADIANS($lat)) * COS(RADIANS(lat)) * COS(RADIANS($lng) - RADIANS(lng)) + SIN(RADIANS($lat)) * SIN(RADIANS(lat))))";
return DB::table('buildings')
->join('missions', 'building_id', '=', 'buildings.id')
->select('missions.*', 'buildings.lat', 'buildings.lng')
->orderBy(DB::raw($orderBy))
->get();
結果:
{
"id": 5,
"building_id" : 2
...
"created_at": "2016-03-07 07:35:19",
"updated_at": "2016-03-07 07:35:19",
"lat": 33,
"lng": 55
}
但這返回相當難看響應和努力的工作。由於Mission
與Building
有關係,我也想將該表加載到響應中(而不是顯示building_id)。但隨着DB:Table()
這是不可能的(?)
{
"id": 5,
"building_id": 2
"building" : {
"id": 2
...
"lat": 33,
"lng": 55
}
...
}
這是我想獲得,並通過緯度/經度排序的響應。 是否有任何可能的方式與Eloquents模型做到這一點?
啊是的,謝謝你。它確實有用! 但不得不改變命令壽'Mission :: select(...)'謝謝! – mertje