3 つのテーブルとの Laravel 結合
Twitter のようなフィード用に Laravel で 3 つのテーブルを結合するには、結合クエリを次のように構築できます。 :
$shares = DB::table('shares') ->join('users', 'users.id', '=', 'shares.user_id') ->join('followers', 'followers.user_id', '=', 'users.id') ->where('followers.follower_id', '=', 3) ->get();
このクエリは、join 句で指定された条件に基づいて、shares、users、followers テーブルを結合します。
もう 1 つのアプローチは、生のクエリの代わりにモデルを使用して、より詳細なクエリを実行することです。オブジェクト指向のアプローチ。モデルを使用した例を次に示します。
// Define User Model class User extends Model { public function shares() { return $this->hasMany('Share'); } public function followers() { return $this->belongsToMany('User', 'follows', 'user_id', 'follower_id'); } public function followees() { return $this->belongsToMany('User', 'follows', 'follower_id', 'user_id'); } } // Define Share Model class Share extends Model { public function user() { return $this->belongsTo('User'); } } // Model Usage $my = User::find('my_id'); $shares = Share::with('user') ->join('follows', 'follows.user_id', '=', 'shares.user_id') ->where('follows.follower_id', '=', $my->id) ->get('shares.*'); foreach ($shares as $share) { echo $share->user->username; }
このモデル アプローチを使用すると、ログイン ユーザーがフォローしているユーザーからすべての共有を取得し、共有を作成したユーザーを積極的に読み込むことができます。
以上がLaravel で 3 つのテーブルを結合して Twitter のようなフィードを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。