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.
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');
}
Bonjour. Je pense que la solution au problème c'est d'utiliser une table pivot "users_contract" (par exemple) avec une relation many to many (https://laravel.com/docs/10.x/eloquent-relationships#many-to-many).