Bonjour,

J'ai besoin de votre aide pour un problème avec le package laravel-messenger (https://github.com/cmgmyr/laravel-messenger)

Je souhaiterai afficher les participants d'une discussion directement sur la page d'index (qui liste tout les discussions).

Le créateur du package m'a donné une indication mais elle ne marche tout simplement pas, je vous la réécris tout de même ici pour vous montrer :

 @foreach($threads as $thread)

     @foreach($thread->participants() as $participant)

           <img src="{{$participant->user->avatar}}" alt="" />

     @endforeach

@endforeach

Merci de votre aide :)

8 réponses


Salut,

Sans plus de précisions on ne pourra pas t'aider. As-tu vérifier que tes variables $threads && $thread ne sont pas vides ?

Salut,

Merci tout d'abord de ton aide :) !

La variable $threads marche bien ainsi que $thread pour récupérer une seule discussion :p
C'est le fait de vouloir récupérer tous les participants d'une discussion qui est plus compliqué apparement :(

Dans le model Thread.php :

public function participants()
    {
      return $this->hasMany(Models::classname(Participant::class), 'thread_id', 'id');
    }

Dans le model Message.php

    public function thread()
    {
        return $this->belongsTo(Models::classname(Thread::class), 'thread_id', 'id');
    }

    public function user()
    {
        return $this->belongsTo(Models::classname(User::class), 'user_id');
    }

Fais un dd($threads) et vois si ce que tu essayes de récupérer est là. L'affichage de ta boucle te donne des lognes blanches c'est ça ?

Oui je n'obtiens aucun résultat :/

Quand je fais un dd, je n'ai pas accès à la partie user enfaite j'ai l'impression

Donc voilà pourquoi ta boucle ne donne rien. Commence par regarder du côté de tes queries SQL.

Et comment pourrai-je faire pour lier un thread unique à plusieurs participants qui y participent ?
Avec une jointure je suppose mais en laravel j'ai un peu de mal ^^

Je suis complètement perdu pour cette fonctionnalité parce que l'auteur du package l'a fait d'une certaine manière et c'est difficile de s'y retrouver au niveau de qui fait quoi enfaite :x

A quoi sert ce package ?

A faire un système de messagerie.
Rayzor, pourquoi utiliser un package ? Si tu connais pas trop laravel je pense que ca serait mieux que tu essayes de le faire de toi même. Qui plus est, cela n'est pas très long

Sinon, si tu veux percéverer avec le package, peux-tu nous montrer la structure de ta DB ?

Et si tu retires les () de participants genre $thread->participants, ca fonctionne pas ?