我如何在 yii2 中的 where 条件( in 子句)中使用变量
how can i use variable in where condition ( in clause) in yii2
我正在尝试从 user
table 中过滤用户记录。我有一个 user_id
字符串,例如7、8、9,当我把那个 user_id
字符串直接放在 when 条件下时,它工作正常
$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,然后查询return只有一个结果,白色如果我把7,8,9直接放在where(['IN' ,'id',[ 7,8,9 ]]) return 正确结果 .
如何在 where 条件下使用变量 where(['IN','id',[ $user_id ]])
请帮助,提前致谢
由于$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();
我正在尝试从 user
table 中过滤用户记录。我有一个 user_id
字符串,例如7、8、9,当我把那个 user_id
字符串直接放在 when 条件下时,它工作正常
$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,然后查询return只有一个结果,白色如果我把7,8,9直接放在where(['IN' ,'id',[ 7,8,9 ]]) return 正确结果 .
如何在 where 条件下使用变量 where(['IN','id',[ $user_id ]]) 请帮助,提前致谢
由于$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();