yii - получить (использовать) id только что сохранённой модели - новой модели / работа со связанными моделями

Прежде всего уточним -

здесь мы хотим использовать id основной модели для работы со связанными с ней моделями - проблема возникает в случае - если основная модель на данный момент только в форме редактирования (то есть только создаётся) - а при этом надо ещё создать экземпляры связанных моделей и прописать и сохранить в основной модели ссылки на экземпляры связанных с ней("привязанных") моделей

здесь нам на помощь придёт событие onAfterSave() ( пример использования здесь) - которое запускается после сохранения модели в БД - при его использовании важно не попасть в бесконечную рекурсию

Дело в том ,что при вызове метода onAfterSave() id для новой модели уже будет определён.

таким образом идея сохранит в следующем -

перенести сохранение параметров моделей ,связанных с данной (и - соответственно - редактируемых одновременно) в метод AfterSave() - который как раз и реализует реакцию события onAfterSave()

- таким образом в set-реализации виртуальных атрибутов, мы не производим сохранение связанных данных (моделей в которые они входят), а записываем эти параметры в дополнительные поля модели, при этом поднимаем флаг (на деле - просто дополнительное поле основной модели), сигнализирующий о том, что нам нужно выполнить ряд действий после сохранения модели = после того, как дополнительные параметры сохранены - мы можем получить их id (это отдельная проблема ,которую в идеале - надёжно можно решить просто выполнив запрос с теми данными, которые только что сохранили) - потом - мы опускаем флаг - иначе попадём в бесконечную рекурсию - после чего вызываем метод сохранения основной модели.

ну как-то так))