Сохранение связанной (многие ко многим) модели

Уже исправленные репорты или принятые предложения
Ответить
codrilla
Сообщения: 173
Зарегистрирован: 2013.03.06, 12:24
Откуда: Молдова, Тирасполь

Сохранение связанной (многие ко многим) модели

Сообщение codrilla »

BaseActiveRecord.php строка 1127

Код: Выделить всё

if ($relation->via !== null) {
            if ($this->getIsNewRecord() || $model->getIsNewRecord()) {
                throw new InvalidCallException('Unable to link models: both models must NOT be newly created.');
            }
Смущает такая ситуация:
Пусть мы создаём новую модель, а в методе afterSave пытаемся привязать ($this->link('relation', $relationModel)) к ней уже существующие модели. Что в результате получается: модель создана, имеет primaryKey (поэтому не вижу ничего, что мешало бы заполнить viaTable и построить связь), но не имеет oldAttributes, как следствие метод $this->getIsNewRecord() возвращает истину и срабатывает исключение.
Это ошибка фреймворка или я мыслю неправильно?
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Сохранение связанной (многие ко многим) модели

Сообщение lynicidn »

codrilla писал(а):BaseActiveRecord.php строка 1127
в какой ветке? от какого числа? надо давать ссылки :roll:
codrilla
Сообщения: 173
Зарегистрирован: 2013.03.06, 12:24
Откуда: Молдова, Тирасполь

Re: Сохранение связанной (многие ко многим) модели

Сообщение codrilla »

https://github.com/yiisoft/yii2/blob/ma ... .php#L1128 Так наверно будет удобнее.
codrilla
Сообщения: 173
Зарегистрирован: 2013.03.06, 12:24
Откуда: Молдова, Тирасполь

Re: Сохранение связанной (многие ко многим) модели

Сообщение codrilla »

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Сохранение связанной (многие ко многим) модели

Сообщение zelenin »

viewtopic.php?f=19&t=18507
здесь не об этом же речь?
codrilla
Сообщения: 173
Зарегистрирован: 2013.03.06, 12:24
Откуда: Молдова, Тирасполь

Re: Сохранение связанной (многие ко многим) модели

Сообщение codrilla »

Об этом же. В той теме есть моё сообщение с ссылкой на эту.
Ответить