Deux relations pour un même modèle

Par Kylesixtine, il y a 2 ans


Bonjour à tous.

Dans une App Laravel, j´ai un modèle user ainsi qu´un modèle contract.

Un contrat doit avoir pour relation deux user.

comment puis je définir une relation pour mon Contract.from_user_id et Contract.to_user_id ?

Nous ferions une relation Belongs To classique avec un seul utilisateur mais comment procéder dans un cas comme celui ci ?

En vous remerciant.

3 réponses

Kareylo, il y a 2 ans

Exactement de la même façon que n'importe quelle autre relation, à l'exception que tu vas définir toi-même les différentes clés étrangères, qui ne respectent pas vraiment les conventions.

Dans ton modèle Contract, tu auras tes belongsTo :

public function fromUser(): BelongsTo { return $this->belongsTo(User::class, 'from_user_id'); } public function toUser(): BelongsTo { return $this->belongsTo(User::class, 'to_user_id'); }

Et dans ton modèle User, tu auras tes hasMany :

public function fromContract(): HasMany { return $this->hasMany(Contract::class, 'from_user_id'); } public function toContract(): HasMany { return $this->hasMany(Contract::class, 'to_user_id'); }
Kylesixtine, il y a 2 ans

merci beaucoup, ça fonctionne comme ça !