【问题标题】:how can i use variable in where condition ( in clause) in yii2如何在 yii2 的 where 条件(in 子句)中使用变量
【发布时间】:2020-01-11 14:43:27
【问题描述】:

我正在尝试从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什么时候是user,那么查询只返回一个结果,如果我把7,8,9直接放在where(['IN','id',[ 7,8,9] ]) 它返回正确的结果。

如何在 where(['IN','id',[ $user_id ]]) 等 where 条件下使用变量 请帮忙,提前谢谢

【问题讨论】:

    标签: php mysql yii2 yii2-model


    【解决方案1】:

    由于$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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      相关资源
      最近更新 更多