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 № 1Je 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.