arrays - 如何在 yii2 中使用 findAll() ?

标签 arrays multidimensional-array yii2 yii2-advanced-app

我想知道如何获取 user 的所有数据以及 where 条件的数组 id

yii中你可以做这样的事情

$students = Student::model()->findAll("id IN ({$_POST['studentIds']})");

$userDtls = Student::model ()->findAllByAttributes ( array (
                    'id' => explode ( ",", $_POST ['studentIds'] ) 
            ) );

现在在yii2CDbCriteria不存在,那么我应该使用哪种方法来实现同样的事情??

我已经尝试过了,但它只返回数组中第一个 id 的数据

$result = Users::findAll([ 'id'=> $_POST ['keylist']]);

文档中写道我们可以使用它

$result = Users::findAll([1,488,489]);

但是我的数组$_POST['keylist']是这样的

keylist{
   0='1'
   1='5'
   2='8'
}

这个我也试过

$ids = \Yii::$app->request->post('keylist', []);

$result = Users::findAll($ids);

并且仍然返回数组中第一个 id 的数据,这里是屏幕截图

enter image description here

这就是我猜它不起作用的原因

谢谢

最佳答案

$users = Users::findAll($ids); 是正确的方法。

查看官方文档中的 $ids 可以传递什么内容 here .

正如我向您解释的那样 here ,您永远不应该信任来自 $_POST 的数据,并在使用前检查其是否存在并进行验证。

使用 Yii2 获取并检查是否存在的示例:

$ids = \Yii::$app->request->post('ids');

或者只是:

$ids = isset($_POST['ids']) ? $_POST['ids'] : null;

对于更复杂的情况,我建议创建单独的搜索模型并将其与验证一起使用,请参阅 Gii 的 CRUD 示例。

更新:注意您实际作为 $ids 传递的内容。

关于arrays - 如何在 yii2 中使用 findAll() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32856991/

相关文章:

Java泛型,将嵌套列表转换为嵌套数组

Javascript通过其他值从多维数组对象中获取值

yii2 - yii2 的 REST API,身份验证器 (HttpBearerAuth) 在服务器上不工作

mysql - 为什么会发生pdo异常?它显示未找到数据库驱动程序

php - Yii2:使用 Swiftmailer 插件 (Openbuildings\Swiftmailer\CssInlinerPlugin)

javascript - 如何仅返回数组中匹配/过滤的字符串?

javascript - Js中如何按对象过滤对象

c# - 为什么多维数组的枚举值不等于自身?

c++ - 我不明白 sizeof() 和数组给出的值

mysql查询从数据库字段中搜索逗号分隔的字符串数据