Как я могу использовать переменную в где условие (в пункте) в YII2 - PullRequest
0 голосов
/ 11 января 2020

Я пытаюсь отфильтровать записи пользователя из таблицы user. У меня есть строка user_id, например, 7,8,9, она работает нормально, когда я помещаю эту строку user_id непосредственно в условие, подобное этому

 $model =  User::find()
            ->select(['id','username','first_name','last_name','image','year','city'])
            ->distinct(true)
            ->where(['IN','id',[ 7,8,9 ]])
            ->asArray()
            ->all();

, но когда я передаю эту строку user_id в переменной показывается только одна запись,

     $userFiltr = ArrayHelper::getColumn($result,'user_id');
     $user_id =  implode(',',$userFiltr); // $user_id return 7,8,9

     $model =  User::find()
        ->select(['id','username','first_name','last_name','image','year','city'])
        ->where(['IN','id',[ $user_id ]]) // when is user this variable $user_id, then query return only one result, white if i put 7,8,9 directly in where(['IN','id',[ 7,8,9 ]]) it return correct result  
        ->asArray()
        ->all();

проблема в том, что когда пользователь использует эту переменную $ user_id, тогда запрос возвращает только один результат, белый, если я поместил 7,8,9 непосредственно в где (['IN', 'id', [7,8,9]]) он возвращает правильный результат.

как я могу использовать переменную в условии условия, например, где (['IN', ' id ', [$ user_id]]) пожалуйста, помогите, заранее спасибо

1 Ответ

2 голосов
/ 11 января 2020

Поскольку $userFiltr уже является массивом , передайте его where:

$userFiltr = ArrayHelper::getColumn($result,'user_id');

$model = User::find()
    ->select(['id','username','first_name','last_name','image','year','city'])
    ->where(['IN','id',$userFiltr])
    ->asArray()->all();
...