Laravel-Join mit drei Tabellen für die Funktionalität sozialer Netzwerke
Wenn Sie in Laravel mit mehreren Tabellen arbeiten, ist es wichtig zu verstehen, wie ein Join durchgeführt wird Abläufe effizient zu gestalten. In diesem Szenario möchten wir Beiträge von Benutzern abrufen, denen ein bestimmter Benutzer folgt.
Datenbanktabellen
Wir haben drei Tabellen beteiligt:
Abfrage mithilfe von Datenbankabfragen
Eine Möglichkeit besteht darin, den Datenbankabfrage-Builder von Laravel zu verwenden. So können Sie die Abfrage erstellen:
<code class="php">$shares = DB::table('shares') ->leftjoin('followers', 'shares.user_id', '=', 'followers.follower_id') ->leftjoin('users', 'followers.user_id', '=', 'users.id') ->where('users.id', 3) ->where('shares.user_id', 'followers.follower_id') ->get();</code>
Modellansatz
Alternativ können Sie Laravel's Eloquent ORM für einen strukturierteren und typsichereren Ansatz verwenden. Definieren Sie Modelle für jede Tabelle:
<code class="php">// 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'); } } // Share model class Share extends Model { public function user() { return $this->belongsTo('User'); } }</code>
Dann können Sie die folgende Abfrage verwenden:
<code class="php">$my = User::find('my_id'); // Eager load the owner of the share $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; }</code>
Diese Abfrage ruft alle Freigaben von Benutzern ab, denen Sie folgen, und lädt eifrig die Benutzer, die geteilt haben sie.
Das obige ist der detaillierte Inhalt vonWie rufe ich mithilfe von Laravel Join Operations Beiträge von Benutzern ab, denen Sie in einem sozialen Netzwerk folgen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!