私はすべての最も近いアイテムを取得したい、座標はリストテーブルに保存されます。 アイテムとリスティングは多対多の関係にあります。 それから距離か低価格から高価格のいずれかでソートされます。他のテーブルの座標を選択
$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);
これは、これはリストテーブルに保存されているlistings.latitudeとlistings.longitudeを必要と距離
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');
}
のための私の項目モデルです。 エラーが
SQLSTATE [42S22]である:カラム見つかりません: 'フィールドリスト'
と高価格に低
ソートの場合で1054不明な列 'listings.latitude'に列が見つかりません:1054不明な列 'listings.id' 'グループ 声明'
これらの2つの種類の座標とリストへのアクセス/選択方法は?
selectのすべてのフィールドがその値に機能的に依存しているわけではないため、グループは誤っているようです。 – Shadow
しかし、実際の問題は、 'with'がジョインで1つのクエリではなく、2つの別々のクエリをシーンの裏で使用するということです。 – Shadow