Bonjour,

Je suis en train d'essayer de faire un reseau social avec Laravel 5.4 et j'aimerai relier plusiers models entre eux je m'explique :

J'ai 3 tables :

User : id , name ...

Followers : id, user_id , followers_id, date

Templates : id , name ...

Dans mon model User j'ai les relations suivantes :

// Peoples I follow
public function followings () {
    return $this->belongsToMany(User::class, 'followers', 'follower_id', 'user_id');
}
public function templates () {
    return $this->hasMany('App\Template');
}

Et dans mon controller j'aimerais recuperer les templates des gens que je follow :

J'aimerais donc faire quelque chose comme ça :

$templates = User::find(Auth::id())->followings->templates;

Merci de vore aide.

1 réponse


Bonjour,

rajoute la relation templates sur le modèle followers et tu pourras récupérer les templates (tu peux la virer de user si elle ne sert à rien)

Je pars du principe qu'il y a une clé user_id sur App\Templates et App\Followers

public function templates () {
    return $this->hasMany(\App\Template::class, 'user_id', 'user_id');
}
$templates = User::find(Auth::id())->followings()->templates;