Я пытаюсь сохранить отношения в третьей таблице «Отношения». Вот код:
Действие сохранения контроллера:
$relations = $_POST['VideoCaptions']['countries'];
$model->attachBehavior('ManyToManyRelationBehavior', array(
'class' => 'ManyToManyRelationBehavior',
'modelNameRelation' => 'Relations',
'firstField' => 'video_captions',
'secondField' => 'video_countries',
'relationList' => $relations,
));
Класс ManyToManyRelationBehavior afterSave action:
if (is_array($this->relationList)){
$model_ = $this->modelNameRelation;
$model_::model()->deleteAll("first_field
=: firstField AND first_field_value
=: firstFieldValue AND second_field
=: secondField ", массив (
": firstField" => $ this-> firstField,
": firstFieldValue" => $ this-> owner-> id,
": secondField" => $ this-> secondField
));
foreach ($ this-> RelationsList как $ value) {
$ model_ = new $ this-> modelNameRelation;
$ model _-> first_field = $ this-> firstField;
$ model _-> first_field_value = $ this-> owner-> id;
$ model _-> second_field = $ this-> secondField;
$ model _-> second_field_value = intval ($ value);
if (! $ model _-> save ()) return false;
}
}
вернуть истину;
[/ NOEDIT]
var_dump ($ model_) возвращает, что модель существует, но $ model-> save () не сохраняет никаких данных в таблице «Relations». Я не могу понять почему. Кто-нибудь может помочь?
Какие проверки вы установили для этого «modelNameRelation»? Вы должны попробовать метод insert () вместо save () и проверить, будет ли он работать или нет? Сохранение сначала проверяет, затем вызывает метод insert () или update ().
РЕШИТЬ:
foreach ($this->relationList as $value){
$model = new $this->modelNameRelation;
$model->first_field = $this->firstField;
$model->first_field_value = $this->owner->id;
$model->second_field = $this->secondField;
$model->second_field_value = intval($value);
Yii::app()->db->createCommand()->insert($model->tableName(), $model->attributes);
}