3.7.6.1 Types de relations
Les quatre types d'associations dans CakePHP sont : hasOne (a un seul), hasMany (a plusieurs), belongsTo (appartient à), et hasAndBelongsToMany (HABTM) (appartient à et est composé de plusieurs).
| Relation | Type d'association | Exemple |
|---|---|---|
| un vers un | hasOne | Un utilisateur a un profil. |
| un vers plusieurs | hasMany | Les utilisateurs dans un système peuvent avoir plusieurs recettes. |
| appartient à | belongsTo | Une recette appartient à un utilisateur. |
| plusieurs vers plusieurs | hasAndBelongsToMany | Les recettes ont, et appartiennent à plusieurs tags. |
Les associations se définissent en créant une variable de classe nommée comme l'association que vous souhaitez définir. La variable de classe peut quelquefois se limiter à une chaîne de caractère, mais peut également être un tableau multi-dimensionnel utilisé pour définir les spécificité de l'association.
<?php
class Utilisateur extends AppModel {
var $name = 'Utilisateur';
var $hasOne = 'Profil';
var $hasMany = array(
'Recette' => array(
'className' => 'Recette',
'conditions' => 'Recette.acceptee = 1',
'order' => 'Recette.created DESC'
)
);
}
?>
<?phpclass Utilisateur extends AppModel {var $name = 'Utilisateur';var $hasOne = 'Profil';var $hasMany = array('Recette' => array('className' => 'Recette','conditions' => 'Recette.acceptee = 1','order' => 'Recette.created DESC'));}?>
Dans l'exemple ci-dessus, la première instance du mot 'Recette' est ce que l'on appelle un 'Alias'. C'est un identifiant pour la relation et cela peut être ce que vous souhaitez. En règle générale, on choisit le même nom que la classe qu'il référence. Toutefois, les alias doivent être uniques à la fois dans un modèle et de part et d'autre d'une relation belongsTo/hasMany ou belongsTo/hasOne. Choisir des noms non-uniques pour des alias de modèle peut engendrer des comportements non souhaités.
