私は Laravel を使用しており、Eloquent ORM で小さな問題を抱えています。JOIN を使用して SQL クエリで簡単に動作させることができますが、Eloquent では動作しないようです!
これが私が欲しいものです。2 つのテーブルがあります。1 つは「Restaurants」で、もう 1 つは「Restaurant_Facilities」です。
テーブルは単純で、1 対 1 の関係です。、 、 などのrestaurant
テーブルとid
、name
、、などでslug
呼び出される別のテーブルがあるようにrestaurant_facilities
id
restaurant_id
wifi
parking
今私がやりたいことは..wifi = 1またはwifi = 0のすべてのレストランをロードすることです..どうすればEloquentでそれを行うことができますか? 熱心な読み込み、ピボット テーブル、with()、collections() を試しましたが、何もうまくいかないようです!
の多対多の関係で私が抱えているのと同じ問題cuisines
! 私は同じrestaurant
テーブルとテーブルとテーブルcuisine
を持っていrestaurant_cuisine_connection
ます..
しかし、その ID を使用して特定の料理内のすべてのレストランを読み込むにはどうすればよいですか?
これは機能します。
Cuisine::find(6)->restaurants()->get();
しかし、私はレストランからこれをロードしたい:: 料理からではなくモデル.. 多くの条件が一緒に連鎖しているため.. 検索およびフィルタリング/閲覧ページ用です。
アイデアや方法はありますか?私はこれに3日間苦労してきましたが、まだ答えがありません。
モデル例:
class Restaurant extends Eloquent {
protected $table = 'restaurants';
public function facilities() {
return $this->hasOne('Facilities');
}
}
class Facilities extends Eloquent {
protected $table = 'restaurants_facilities';
public function restaurant() {
return $this->belongsTo('Restaurant');
}
}
PS: これは機能しているようですが、これは雄弁な方法ではありませんか?
Restaurant::leftJoin(
'cuisine_restaurant',
'cuisine_restaurant.restaurant_id',
'=', 'restaurants.id'
)
->where('cuisine_id', 16)
->get();
また、別のクエリなしで特定の列の値を持つレストランの数を見つけるための最良の方法は何ですか? のように.. 駐車場が 1 で Wi-Fi が 1 のレストランの合計を見つけなければなりませんか?
これについて助けてください。
ありがとうございました。