Heim > Datenbank > MySQL-Tutorial > 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
Freigeben: 2024-10-25 07:52:29
Original
571 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage