Heim >Datenbank >MySQL-Tutorial >Wie kann man drei Tischen in Laravel für einen Twitter-ähnlichen Feed beitreten?
Laravel Join mit 3 Tabellen
Um drei Tabellen in Laravel für einen Twitter-ähnlichen Feed zu verbinden, kann die Join-Abfrage wie folgt aufgebaut werden :
$shares = DB::table('shares') ->join('users', 'users.id', '=', 'shares.user_id') ->join('followers', 'followers.user_id', '=', 'users.id') ->where('followers.follower_id', '=', 3) ->get();
Diese Abfrage verknüpft die Shares-, Benutzer- und Follower-Tabellen basierend auf den in den Join-Klauseln angegebenen Bedingungen.
Ein anderer Ansatz besteht darin, Modelle anstelle von Rohabfragen für mehr zu verwenden objektorientierter Ansatz. Hier ist ein Beispiel für die Verwendung von Modellen:
// 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; }
Mit diesem Modellansatz können Sie alle Freigaben von Benutzern abrufen, denen der angemeldete Benutzer folgt, und dabei eifrig den Benutzer laden, der die Freigabe erstellt hat.
Das obige ist der detaillierte Inhalt vonWie kann man drei Tischen in Laravel für einen Twitter-ähnlichen Feed beitreten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!