Как уточнить запрос в Yii?

Я имею 2 таблицы:

USER
id, name, surname

UserUser
u_id1, u_id2, date, status

Я имею вот такой action в моделе USER:
public function getUsers($status)
    {
        return $this->hasMany(UserUser::className(), ['u_id1' => 'id'])
            ->where(['status' => $status]);
    }

Но мне нужно добавить еще возможность искать name, surname из таблицы User, если я добавляю WHERE или Like,
пишет ошибку что в таблице UserUser таких столбцов (name, surname) не найдено?
Как мне добавить эти 2 значения к поиску или возвращаемому значению?
Я использую Yii2.
  • Вопрос задан
  • 2396 просмотров
Решения вопроса 1
azovl
@azovl Автор вопроса
return $this->hasMany(User::className(), ['id' => 'u_id2'])->viaTable(UserUser::tableName(), ['u_id1' => 'id'],
function($query) {
$query->where(['status' => 1]);
})->andWhere(['like', 'name', $input])
->orWhere(['like', 'surname', $input]);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Flaker
@Flaker
Попробуйте вот так:
public function getUsers($status)
    {
        return $this->hasMany(static::className(), ['id' => 'id'])
            ->viaTable('{{%UserUser}}', ['u_id2' => 'id'])
            ->where(['status' => $status]);
    }


Official Guide Info:
https://github.com/yiisoft/yii2/blob/master/docs/g...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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