Formation PUB030 : Laravel, 2019 Les relations avec Eloquent ORM

22.8 Résumé des relations Eloquent (Cheat sheet)


Les principales relations que vous aurez à utiliser dans vos modèles Eloquent sont illustrées ici.

Relations Laravel

hasMany() : relation de un à plusieurs - côté table principale

Syntaxe d'une relation dans un modèle Laravel (PHP)

/**

 * Un modeleA peut avoir plusieurs modeleB (ou "peut être associé à").

 *

 * @return \Illuminate\Database\Eloquent\Relations\HasMany

 */

public function modelesB() : HasMany

{

    return $this->hasMany('App\ModeleB', 'nom_cle_etrangere', 'nom_cle_primaire');

}

belongsTo() : relation un à plusieurs - côté table secondaire ou relation un à un - côté table secondaire

Syntaxe d'une relation dans un modèle Laravel (PHP)

/**

 * Un modeleA appartient à un modeleB (ou "est associé à" ou "a").

 *

 * @return \Illuminate\Database\Eloquent\Relations\BelongsTo

 */

public function modeleB() : BelongsTo

{

    return $this->belongsTo('App\ModeleB', 'nom_cle_etrangere', 'nom_cle_primaire');

}

belongsToMany() : relation plusieurs à plusieurs

Syntaxe d'une relation dans un modèle Laravel (PHP)

/**

 * Un modeleA peut être associé à plusieurs modeleB.

 *

 * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany

 */

public function modelesB() : BelongsToMany

{

    return $this->belongsToMany('App\ModeleB', 'nom_table_pivot', 'nom_cle_etrangere_vers_table_actuelle', 'nom_cle_etrangere_vers_autre_table', 'nom_cle_primaire_dans_table_actuelle', 'nom_cle_primaire_dans_autre_table');

}

hasOne() : relation un à un - côté table principale

Syntaxe d'une relation dans un modèle Laravel (PHP)

/**

 * Un modeleA peut avoir un modeleB (relation de un à un).

 *

 * @return \Illuminate\Database\Eloquent\Relations\HasOne

 */

public function modeleB() : HasOne

{

    return $this->hasOne('App\ModeleB', 'nom_cle_etrangere', 'nom_cle_primaire');

}

hasManyThrough() : deux relations de un à plusieurs enchaînées

Syntaxe d'une relation dans un modèle Laravel (PHP)

/**

 * Un modeleA peut avoir plusieurs modeleB.

 *

 * @return \Illuminate\Database\Eloquent\Relations\HasManyThrough

 */

public function modelesB() : HasManyThrough

{

    return $this->hasManyThrough('App\ModeleB',  'App\ModeleTableIntermediaire', 'nom_cle_etrangere_dans_table_intermediaire_vers_table_actuelle', 'nom_cle_etrangere_dans_table_eloignee_vers_table_intermediaire', 'nom_cle_primaire_dans_table_actuelle', 'nom_cle_primaire_dans_table_intermediaire');

}

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre