Maison > base de données > tutoriel mysql > Comment rejoindre trois tables dans Laravel pour un flux de type Twitter ?

Comment rejoindre trois tables dans Laravel pour un flux de type Twitter ?

DDD
Libérer: 2024-10-27 00:00:05
original
955 Les gens l'ont consulté

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

Laravel Join with 3 Tables

Pour joindre trois tables dans Laravel pour un flux de type Twitter, la requête de jointure peut être construite comme suit :

$shares = DB::table('shares')
    ->join('users', 'users.id', '=', 'shares.user_id')
    ->join('followers', 'followers.user_id', '=', 'users.id')
    ->where('followers.follower_id', '=', 3)
    ->get();
Copier après la connexion

Cette requête rejoint les tables de partages, d'utilisateurs et d'abonnés en fonction des conditions spécifiées dans les clauses de jointure.

Une autre approche consiste à utiliser des modèles au lieu de requêtes brutes pour un résultat plus approche orientée objet. Voici un exemple utilisant des modèles :

// 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;
}
Copier après la connexion

En utilisant cette approche de modèle, vous pouvez récupérer tous les partages des utilisateurs suivis par l'utilisateur connecté, en chargeant avec impatience l'utilisateur qui a créé le partage.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal