Как вызвать событие родительской модели в YII2?

Всем привет.

В системе есть 2 модели. Например, House и Flat.
Каждый House имеет несколько Flat, и каждый Flat имеет один House.
Связь один ко многим.

Что хочу сделать: если обновился Flat, то вызывать событие обновления соответствующего House. Как в рамках YII2 это можно сделать? Использовать событие AfterSave и делать Trigger на House?

Есть ещё варианты?
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 3
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
1. Это не родительская модель, а связанная, и для flat и для House родительская модель это AR или Model. Хотя правильнее наверное называть родительский класс, но в любом случае это сбивает с толку.

2. Если изменения во flat требуют изменения House, есть большая вероятность, что у Вас не верная структура. Опишите, что именно Вы хотите там менять. Например если Вы пишите в базу кол-во flat у house, то это в корне не верно, для этого создается метод, который динамически считает. Ну и т.п.

3. В модели есть события, в том числе afterSave. Описываете в методе afterSave любую логику, подтягивая необходимый House из связи и эта логика будет срабатывать каждый раз, после сохранения flat. Если есть необходимость использовать логику повторно или иметь возможность ее отключать в ряде случаев, стоит реализовать ее как поведение.
Ответ написан
Sanovskiy
@Sanovskiy
Веб-разработчик с 2005 года
beforeSave() и afterSave() в Yii2
Надеюсь, я правильно понял о чем вы.
Ответ написан
usdglander
@usdglander
Yipee-ki-yay
Тут смотрели?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы