При сохранении формы необходимо было записывать в другую таблицу (модель) несколько записей.
Вариант втупую:
Код: Выделить всё
if ( $model->save() )
{
if( $model->form_flag || $model->activity_flag)
{
$others = new Others();
$others->usorg_id = $model->id;
if( $model->form_flag )
{
$others->field_name = 'form';
$others->field_value = $model->new_form;
$others->save(false);
}
if( $model->activity_flag )
{
$others->field_name = 'activity';
$others->field_value = $model->new_activity;
$others->save(false);
}
}
$this->redirect( array ( 'view', 'id' => $model->id ) );
}
не прокатил - в базу заносилась только последняя запись.
Обернуть в транзакции, как предложил
xoma не привел ни к чему - также только одна последняя запись.
Решил проблему так:
создал в модели метод
Код: Выделить всё
public function mSave($id, $field, $value)
{
$ot = new Others();
$ot->usorg_id = $id;
$ot->field_name = $field;
$ot->field_value = $value;
$ot->save();
}
а в контроллере сделал так:
Код: Выделить всё
if ( $model->save() )
{
if ( $model->form_flag )
Others::model()->orgSave( $model->id, 'form', $model->new_form );
if ( $model->activity_flag )
Others::model()->orgSave( $model->id, 'activity', $model->new_activity );
$this->redirect( array ( 'view', 'id' => $model->id ) );
}
хотя, наверное, надо было создать метод mSave в контроллере ...
Вопрос: не уверен что сделал грамотно. Возможно есть решение более каноническое что-ли ... Подскажите, плз
Processor not found! Software emulation ...