Maison > base de données > tutoriel mysql > le corps du texte

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

DDD
Libérer: 2024-10-27 00:00:05
original
754 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!

source:php.cn
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!