@Pogran

Как правильно использовать ActiveQuery расширяя ActiveRecord?

У меня есть класс User который наследуется от ActiveRecord
В данном классе я расширяю метод find вот так
public static function find()
    {
        return new UserQuery(get_called_class());
    }

и вот сам класс UserQuery
class UserQuery extends ActiveQuery
{
    /**
     * @param $role integer
     * @return $this
     */
    public function forRole($role) 
    {
        return $this->andWhere(['role' => $role]);    
    }
}


И сейчас я в виде хочу получить список юзеров для grida(именно для фильтра) которые являются Провайдерами.

Делаю это вот так
User::find()->select(['username','id'])->forRole(User::ROLE_PROVIDER)->indexBy('id')->column()


интересует вопрос хорошая ли эта запись, или в виде надо как-то больше использовать возможности моделей(ActiveQuery) и вызывать какую-нить функцию UserQuery::UsersByRole(User::ROLE_PROVIDER)
  • Вопрос задан
  • 175 просмотров
Пригласить эксперта
Ответы на вопрос 1
Dry7
@Dry7
Web разработчик
Лучше сделать метод getUserProviders в классе User, и туда поместить Ваш код выборки.
Это правильней, т.к. эта выборка может много где использоваться, и если ее нужно будет поменять, то проще это сделать в одном месте чем лазить по всему проекту.
Ответ написан
Ваш ответ на вопрос

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

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