Maison >base de données >tutoriel mysql >Comment récupérer les publications des utilisateurs que vous suivez sur un réseau social à l'aide des opérations de jointure Laravel ?

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
Patricia Arquetteoriginal
2024-10-25 07:52:29573parcourir

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>

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>

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>

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!

Déclaration:
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