我想獲取所有最近的項目,座標保存在列表表格中。 項目和列表是多對多的關係。 然後它會按距離或低到高排序。選擇其他表格的座標
$items = Item::with('listings')
->select('*');
if($request->sortby == 'distance'){
$items->distance($lat,$lng);
}
if($request->sortby == 'low'){
$items->groupBy('listings.id')
->orderBy('items.price');
}
$items = $items->paginate(10);
這是我距離
public function scopeDistance($query, $lat, $lng) {
return $query->addSelect(DB::Raw('(3959 * acos(cos(radians(' . $lat . ')) * cos(radians(listings.latitude)) * cos(radians(listings.longitude) - radians(' . $lng . ')) + sin(radians(' . $lat .')) * sin(radians(listings.latitude)))) AS distance'))
->orderBy('distance');
}
項目模型,這需要listings.latitude和listings.longitude中保存的房源表。 該錯誤是
SQLSTATE [42S22]:未發現柱:1054未知列在 '字段列表'
並且如果 'listings.latitude' 排序從低到高價格
沒有找到柱:1054未知列 'listings.id' 在 '組 聲明'
如何訪問/選擇這兩種座標和列表?
這個組似乎對我來說不正確,因爲select中的所有字段在功能上都依賴於它的值。 – Shadow
但我認爲真正的問題是'with'在幕後使用2個單獨的查詢,而不是帶連接的單個查詢。 – Shadow