Forme simplifiée :
class Product extends SActiveRecord { public static $relationships = array ( 'group' => 'belongs_to', 'details' => 'has_many' ); }
Dans le cas de la forme simplifiée, la classe de destination (option class_name) sera supposée porter le même nom que l'association, ou le singulier de ce nom si l'association est de type has_many ou many_to_many.
Forme standard :
class Product extends SActiveRecord { public static $relationships = array ( 'group' => array ( 'assoc_type' => 'belongs_to', 'class_name' => 'Group' ), 'details' => array ( 'assoc_type' => 'has_many', 'class_name' => 'Detail' ) ); }
L'association est accessible de la même façon qu'un attribute :
$record→association→attribute : retourne la valeur de l'attribut de l'objet associé.$record→association→target() : retourne l'objet associé ou null si il n'y en a pas.$record→association→is_null() : retourne true si il n'y a pas d'objet associé.$record→association = $otherRecord : assigne l'objet à associer, en extrait la PK, et l'assigne en tant que FK.$record→association→create($attributes) : retourne un nouvel objet associé, instancié avec $attributes, et sauvé.
Exemple : une classe Thumbnail déclare un 'photo' ⇒ 'belongs_to'. Vous pouvez utiliser l'association ainsi :
echo $thumbnail→photo→filename;$photo = $thumbnail→photo→target();…
L'association est accessible de la même façon qu'un attribute, et se comporte comme un SQuerySet :
$record→collection→all() : permet d'itérer les objets associés.$record→collection→count() : retourne le nombre d'objets de la collection.$record→collection→replace(array($entities…)) : remplace la collection existante par le tableau d'objets fournis.$record→collection→add($entity) : ajoute un ou plusieurs objets à la collection.$record→collection→delete($entity) : supprime un ou plusieurs objets de la collection.$record→collection→singular_ids($ids) : replace les objets de la collection par les objets dont on fournit les IDs.$record→collection→clear() : supprime tous les objets de la collection.