php - 我如何在yii2中的where条件(in子句)中使用变量

标签 php mysql yii2 yii2-model

我正在尝试从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放入where(['IN','id',[ 7,8,9 ] ]) 它返回正确的结果。

如何在 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();

关于php - 我如何在yii2中的where条件(in子句)中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59695454/

相关文章:

php循环遍历MySQL记录-根据行值做出决定

PHP MySQL 查询 "Create Table"- 初学者需要帮助

php - 简单的 HTML 表单不会向 MySQL 表添加值

pagination - Yii2 Union 分页问题

php - 想象一下 Yii 2 的扩展

php - 将文件上传并发布到 PHP 页面

php - 下拉列表中的值未传递到 Laravel php 中的 Controller

mysql - SQL 映射表可以加快查询速度吗?你如何使用它们?

php - 如何在 Mysql Xampp 中不使用 phpmyadmin 进行数据库备份

javascript - 在 Yii2 中使用 Clipboard.js