/ Relation entre Laravel et tableau croisé dynamique - php, laravel, laravel-5, éloquent, laravel-5.4

Relation Laravel avec tableau croisé dynamique - php, laravel, laravel-5, éloquent, laravel-5.4

J'ai 3 tables dans ma base de données:

users (id);
interests (id);
users_interests (user_id, interests_id);

Je veux pouvoir récupérer tous les intérêts de l’utilisateur de cette façon:

$interests = $user->interests

C’est ce que j’ai écrit dans le modèle User.php, à la suite du document de laravel:

public function interests() {
return $this->hasManyThrough(
"AppInterest", "AppUserInterest",
"user_id", "id", "interest_id"
);
}

mais il retourne vide même si l'utilisateur a une partie. Donc, il doit y avoir quelque chose que je fais mal

Quelqu'un pour m'aider?

Réponses:

2 pour la réponse № 1

Je pense a belongs to many ferait le travail:

public function interests() {
return $this->belongsToMany(
"AppInterest",
"users_interests",
"user_id",
"interests_id"
);
}

Tout à fait semblable à l'exemple du docs

Si vous deviez renommer users_interests table à interest_user et la colonne interests_id au singulier, vous aurez juste besoin du premier paramètre:

 public function interests() {
return $this->belongsToMany(AppInterest::class);
}

De ma compréhension le hasManyThrough est utilisé pour avancer dans une relation (également décrite dans la documentation):

La relation "a-plusieurs-par-tout" fournit un raccourci pratique pour accéder à des relations distantes via une relation intermédiaire.