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

Comment récupérer les publications des utilisateurs que vous suivez sur un réseau social à l'aide des opérations de jointure Laravel ?

Patricia Arquette
Libérer: 2024-10-25 07:52:29
original
497 Les gens l'ont consulté

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

Laravel Join avec trois tables pour la fonctionnalité des réseaux sociaux

Dans Laravel, lorsque vous travaillez avec plusieurs tables, il est essentiel de comprendre comment effectuer une jointure opérations de manière efficace. Dans ce scénario, notre objectif est de récupérer les publications des utilisateurs suivis par un utilisateur spécifique.

Tables de base de données

Nous avons trois tables impliquées :

  • Utilisateurs : id
  • Abonnés : user_id, follower_id
  • Partages : user_id

Requête à l'aide de requêtes de base de données

Une option consiste à utiliser le générateur de requêtes de base de données de Laravel. Voici comment construire la requête :

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

Approche modèle

Vous pouvez également utiliser l'ORM éloquent de Laravel pour une approche plus structurée et plus sécurisée. Définissez des modèles pour chaque table :

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

Ensuite, vous pouvez utiliser la requête suivante :

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

Cette requête récupère tous les partages des utilisateurs que vous suivez et charge avec impatience les utilisateurs qui ont partagé eux.

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
Derniers articles par auteur
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!