YiiConf 2017 всё ближе! Не забудьте купить билет.

Сохранение связанных данных

Довольно часто требуется сохранить связанные данные для текущей модели. К примеру,
при сохранении модели команды сохранить её членов:

// создаём команду
$team = new Team();
$team->name = 'yiiframework.ru documentation team';

// создаём члена
$member1 = new Member();
$member1->name = 'Alexander';

// создаём члена
$member2 = new Member();
$member2->name = 'Alexey';

// добавляем членов в команду
$team->members[] = $member1;
$team->members[] = $member2;

// сохраняем
$team->save();

Чтобы код выше работал, определим метод afterSave модели Team:

class Team extends CActiveRecord{
    // …
    // выполняется сразу после сохранения Team
    protected function afterSave(){
        parent::afterSave();
        
        foreach($this->members as $member) {
            // задаём членам id команды
            $member->teamId = $this->id;
            $member->save();
        }
    }
    // …
}