Heim  >  Artikel  >  Datenbank  >  Wie rufe ich mithilfe von Laravel Join Operations Beiträge von Benutzern ab, denen Sie in einem sozialen Netzwerk folgen?

Wie rufe ich mithilfe von Laravel Join Operations Beiträge von Benutzern ab, denen Sie in einem sozialen Netzwerk folgen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-25 07:52:29498Durchsuche

How to Retrieve Posts from Users You Follow in a Social Network using Laravel Join Operations?

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:

  • Benutzer: id
  • Follower: user_id, follower_id
  • Shares: user_id

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn