Laravel #11 - Les relations

Edité le 13/09/2020

Les relations

Pour faire une relation avec Laravel tout se passe dans vos modèles.

Il existe trois types de relations :

  • 1 pour x (one to many)
  • x pour 1 (many to one)
  • x pour x (many to many)


One to many/ Many to one

La relation 1 pour x s'utilise pour lier une ligne d'une table à x lignes d'une autre table (par exemple un utilisateur possède x publications)

Pour ce faire, si nous continuons avec cet exemple, chaque publication doit avoir une colonne user_id qui permettra de lier la publication à l'utilisateur.

Il est important de nommer la colonne user_id, ou plus précisement (nomDeLaTable_id)


Une fois dans le modèle, si vous êtes dans le modèle de la table des publications (ou plutôt dans la table contenant la colonne qui fait la liaison) il faut utiliser belongsTo() sinon, si c'est la table user il faut utiliser hasMany().


Concrètement dans le code comment ça marche ?

Dans votre modèle des publications, pour avoir les informations concernant l'utilisateur faites :

public function user()
{
    return $this->belongsTo('App\User');
}

Comme vous pouvez le voir, il suffit de lier le modèle à l'autre modèle User


Pour avoir toutes les publications d'un utilisateur, il faut faire :

public function publications()
{
    return $this->hasMany('App\Publication');
}


Voilà, je pense que vous avez compris le principe, voyons maintenant les relations x pour x


Many to Many

Cette relation est utile si plusieurs utilisateurs possèdent plusieurs publications par exemple

C'est toujours le même principe, dans le modèle il faut utiliser belongsToMany() des deux côtés  

public function users()
{
    return $this->belongsToMany('App\User');
}
public function publications()
{
    return $this->belongsToMany('App\Publication');
}


Attention, il est important de créer une table pivot, c'est à dire une table qui va servir simplement à enregistrer l'id de l'utilisateur et l'id de la publication. Grâce à cette table pivot, il sera possible d'enregistrer tout les utilisateurs à toutes les publications possible.

Cette table pivot doit avoir le nom suivant table1_table2 donc pour notre exemple user_publication (au singulier)


Pour lier une publication à un utilisateur, il suffit de faire dans un controller :

$user = User::find(1);
$publication = Publication::find(1)

$publication->users()->save($user)

Dans l'exemple si dessus j'ai lié le user 1 à la publication 1. Je vous conseil par la suite d'aller voir votre table pivot pour vérifier que votre relation fonctionne correctement.


Nous avons finit notre section concernant le début de Laravel. Vous êtes désormais capable de créer vos premier site avec Laravel. N'hésitez pas à aller voir les autres sections sur le blog ! 


Cet article a été vu 340 fois
Laisser un commentaire:
Laissez le premier commentaire..
Laravel Débutant

Laravel est un framework web open-source écrit en PHP respectant le principe modèle-vue-contrôleur et entièrement développé en programmation orientée objet. Laravel est distribué sous licence MIT, avec ses sources hébergées sur GitHub. En peu de temps, une communauté d'utilisateurs du framework s'est constituée, et il est devenu en 2016 le projet PHP le mieux noté de GitHub. Laravel reste pourtant basé sur son grand frère Symfony, pour au moins 30 % de ses lignes (utilisation de "Symfony component").

# # # # #