@bighoc
php/javascript developer

Приватные свойства ActiveRecord Yii2?

Хотелось бы обьявить некоторые свойства модели приватными. Скажем клетку `status` в таблице `order` я хочу устанавливать только через метод `setStatus()`. Лично мне ничего не мешает завести такой метод и пользовать только им.
Но я бы хотел исключить остальные варианты установки `order` кроме как через метода `setStatus`. Могу ли я это сделатЬ?
  • Вопрос задан
  • 492 просмотра
Пригласить эксперта
Ответы на вопрос 2
@matperez
Можете к примеру перехватывать обращение к полю в в магических методах __get/__set и кидать исключение. Из коробки такого функционала нет.
Ответ написан
Комментировать
@LAV45
set-теры и get-теры в основном используются для модификации данных в момент их получения или присваивания.
Почитайте лучше про ActiveRecord::scenarios()
https://github.com/yiisoft/yii2/blob/master/docs/g...

class Order extends ActiveRecord
{
    public function scenarios()
    {
        $scenarios = parent::scenarios();
        $scenarios[self::SCENARIO_DEFAULT] = [/** Все поля без поля status */];
        $scenarios['editWithStatus'] = [/** Все поля */];
        return $scenarios;
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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