Laravel Join with 3 Tables
Pour joindre trois tables dans Laravel pour un flux de type Twitter, la requête de jointure peut être construite comme suit :
$shares = DB::table('shares') ->join('users', 'users.id', '=', 'shares.user_id') ->join('followers', 'followers.user_id', '=', 'users.id') ->where('followers.follower_id', '=', 3) ->get();
Cette requête rejoint les tables de partages, d'utilisateurs et d'abonnés en fonction des conditions spécifiées dans les clauses de jointure.
Une autre approche consiste à utiliser des modèles au lieu de requêtes brutes pour un résultat plus approche orientée objet. Voici un exemple utilisant des modèles :
// 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; }
En utilisant cette approche de modèle, vous pouvez récupérer tous les partages des utilisateurs suivis par l'utilisateur connecté, en chargeant avec impatience l'utilisateur qui a créé le partage.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!