Heim  >  Artikel  >  Datenbank  >  Wie kann man drei Tischen in Laravel für einen Twitter-ähnlichen Feed beitreten?

Wie kann man drei Tischen in Laravel für einen Twitter-ähnlichen Feed beitreten?

DDD
DDDOriginal
2024-10-27 00:00:05754Durchsuche

How to Join Three Tables in Laravel for a Twitter-like Feed?

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!

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