yii2 + запрос на соединение в ActiveDataProvider

Это мой фактический запрос -

$dataProvider = new ActiveDataProvider([
            'query' => UserProfile::find()->with(['user'])
        ]);

Поле «статус» существует в пользовательской таблице. Итак, я хочу отфильтровать данные по тому, где status != 0, но это не удается.

Я пробовал это -

1

$dataProvider = new ActiveDataProvider([
            'query' => UserProfile::find()->with(['user'])->where('user.status !=',0)
        ]);

2

$dataProvider = new ActiveDataProvider([
            'query' => UserProfile::find()->with(['user'])->where('<>','user.status',0)
        ]);

Ничего из этого не работает. пожалуйста, дайте мне, как это возможно?


person Nisarg    schedule 14.09.2015    source источник


Ответы (1)


Вам нужно изменить свой код $dataProvider на этот код.

$dataProvider = new ActiveDataProvider([
            'query' => UserProfile::find()->joinWith(['user(relation_name)'])->where(['<>','user.status',0])
        ]);
person GAMITG    schedule 14.09.2015
comment
У меня есть добавить массив в функцию where. - person GAMITG; 14.09.2015
comment
Я получил эту ошибку - SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец «user.status» в «предложении where». Выполняемый SQL: SELECT COUNT (*) FROM user_profile WHERE user.status ‹› 0 - person Nisarg; 14.09.2015
comment
в with() user есть имя отношения? - person GAMITG; 14.09.2015
comment
Да. UserProfile имеет отношение к User. вот так - user_profile.user_id = user.id - person Nisarg; 14.09.2015