Guide complet des relations Eloquent : One-to-One, One-to-Many et Many-to-Many dans Laravel

Maitrisez les relations Eloquent dans Laravel : hasOne, hasMany, belongsTo et belongsToMany. Exemples pratiques pour lier vos tables efficacement.

Mahmoud DEVO
Mahmoud DEVO
December 28, 2025 2 min read
Guide complet des relations Eloquent : One-to-One, One-to-Many et Many-to-Many dans Laravel

Relations entre tables avec Eloquent

Dans ce chapitre, nous allons explorer les relations entre tables avec Eloquent. Les relations sont une façon de lier des tables ensemble pour faciliter l’accès aux données et améliorer la convivialité du code.

Introduction

Les relations sont essentielles dans la conception d’une base de données relationnelle. Elles permettent de représenter les relations entre les entités, comme par exemple une entreprise a plusieurs employés ou un utilisateur a plusieurs contacts. Eloquent fournit un ensemble de méthodes pour définir et utiliser ces relations.

Relations 1:1

Les relations 1:1 sont utilisées lorsque deux tables ont une relation directe l’une avec l’autre, comme par exemple une entreprise a un seul siège social ou un utilisateur a un seul compte bancaire. La définition d’une relation 1:1 est similaire à celle d’une relation 1:n.

// Définition de la relation 1:1
class User extends Model {
    public function company() {
        return $this->hasOne(Company::class);
    }
}

Relations 1:n

Les relations 1:n sont utilisées lorsque une table a plusieurs relations avec une autre table, comme par exemple un utilisateur a plusieurs contacts ou une entreprise a plusieurs employés. La définition d’une relation 1:n est similaire à celle d’une relation 1:1.

// Définition de la relation 1:n
class User extends Model {
    public function contacts() {
        return $this->hasMany(Contact::class);
    }
}

Relations n:1

Les relations n:1 sont utilisées lorsque plusieurs tables ont une relation avec une table unique, comme par exemple les contacts d’un utilisateur ou les employés d’une entreprise. La définition d’une relation n:1 est similaire à celle d’une relation 1:n.

// Définition de la relation n:1
class Contact extends Model {
    public function user() {
        return $this->belongsTo(User::class);
    }
}

Relations Many-To-Many

Les relations many-to-many sont utilisées lorsque plusieurs tables ont des relations avec d’autres tables, comme par exemple les contacts d’un utilisateur et les utilisateurs de ces contacts. La définition d’une relation many-to-many nécessite la création d’une table pivot qui lie les deux tables.

// Définition de la relation many-to-many
class User extends Model {
    public function contacts() {
        return $this->belongsToMany(Contact::class);
    }
}

class Contact extends Model {
    public function users() {
        return $this->belongsToMany(User::class);
    }
}

Utilisation des relations

Les relations peuvent être utilisées pour accéder aux données de manière fluide et intuitive. Par exemple, vous pouvez récupérer les contacts d’un utilisateur en utilisant la méthode contacts().

$user = User::first();
$contacts = $user->contacts;

Conseils et astuces

  • Utilisez les relations pour simplifier votre code et améliorer sa convivialité.
  • Définissez les relations de manière claire et intuitive pour éviter les erreurs.
  • Utilisez les méthodes with() et without() pour ajouter ou supprimer des relations à la requête.

Conclusion

Les relations sont une partie essentielle de la conception d’une base de données relationnelle. Eloquent fournit un ensemble de méthodes pour définir et utiliser ces relations. En utilisant les relations, vous pouvez accéder aux données de manière fluide et intuitive, ce qui améliore la convivialité de votre code.

Prochain chapitre

Le prochain chapitre traitera des requêtes avec Eloquent, vous montrant comment effectuer des requêtes complexes en utilisant les méthodes where(), groupBy() et autres.

Advertisement

In-Article Ad

Dev Mode

Share this article

Mahmoud DEVO

Mahmoud DEVO

Senior Full-Stack Developer

I'm a passionate full-stack developer with 10+ years of experience building scalable web applications. I write about Vue.js, Node.js, PostgreSQL, and modern DevOps practices.

Enjoyed this article?

Subscribe to get more tech content delivered to your inbox.

Related Articles