Задать вопрос
EnChikiben
@EnChikiben

Сохранение свойств при поиске

Добрый вечер! Возможно ли сохранить значение определенных свойств модели при вызове метода find и всех его вытекающих.
Например:
$model = R::model();
$model->a = '123'; // a это не столбец БД это свойство модели
$model->findAll();

после findAll свойство, a обнуляется, как то возможно его сохранить?
  • Вопрос задан
  • 2882 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ну для начала вы должны понять что происходит когда вы вызываете метод model() и метод findAll().

Если абстрагироваться от конкретной реализации, то метод model() вернет вам «репозиторий» записей, а findAll() — коллекцию записей. Это означает что все эти объекты являются разными инстансами, и все свойства для них имеют свои собственные значения. Единственный способ с вашим подходом, при котором свойство инициируется до findAll() — статические свойства. Тогда одно такое свойство будет общим для всех инстансов. Но это не есть гуд.

В любом случае у вас есть ивенты. Вы можете написать в модели метод afterFind() и там уже засетить все что вы хотите. Можете это сделать извне, обработав такое событие через поведение или просто подписав свой обработчик на этой событие.
Ответ написан
ilyaplot
@ilyaplot
PHP программист
MyModel extends CModel и реализовывайте нужный функционал. Не пойму, в чем загвоздка?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы