Table of Contents

Les associations

Déclaration

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'
        )
    );
}

Cette forme vous permet de préciser certaines options ; les options valables pour tous les types d'associations sont :

Types d'associations en fonction des Foreign Keys

Comportement des associations

Associations has_one et belongs_to

Collections (associations has_many et many_to_many)

API des associations

has_one et belongs_to

L'association est accessible de la même façon qu'un attribute :

Exemple : une classe Thumbnail déclare un 'photo' ⇒ 'belongs_to'. Vous pouvez utiliser l'association ainsi :

has_many et many_to_many

L'association est accessible de la même façon qu'un attribute, et se comporte comme un SQuerySet :

Options spécifiques

has_one

belongs_to

has_many

many_to_many