我想知道如何获取 user
的所有数据以及 where
条件的数组 id
在yii
中你可以做这样的事情
$students = Student::model()->findAll("id IN ({$_POST['studentIds']})");
或
$userDtls = Student::model ()->findAllByAttributes ( array (
'id' => explode ( ",", $_POST ['studentIds'] )
) );
现在在yii2
中CDbCriteria
不存在,那么我应该使用哪种方法来实现同样的事情??
我已经尝试过了,但它只返回数组中第一个 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 的数据,这里是屏幕截图
这就是我猜它不起作用的原因
谢谢
最佳答案
$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/