Код: Выделить всё
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() возвращает истину и срабатывает исключение.
Это ошибка фреймворка или я мыслю неправильно?