我想知道如何获取user
的所有数据,其数组ID为where
条件
在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的数据,这里是截图
这就是为什么它不起作用我猜
谢谢
答案 0 :(得分:3)
$users = Users::findAll($ids);
是一种正确的方法。
在官方文档here中查看$ids
中可以传递的内容。
正如我向您解释here,您永远不应该信任来自$_POST
的数据并检查它是否存在并在使用前进行验证。
使用Yii2获取和检查存在的示例:
$ids = \Yii::$app->request->post('ids');
或者只是:
$ids = isset($_POST['ids']) ? $_POST['ids'] : null;
对于更复杂的情况,我建议创建单独的搜索模型并将其与验证一起使用,例如,请参阅Gii的CRUD。
更新:请注意您实际传递的内容为$ids
。
答案 1 :(得分:0)
$students_ids = Yii::$app->request->post('studentIds');
if(isset($students_ids)) {
$result = Users::find()->where(['in','id',$students_ids])->all();
}
var_dump($result)
试试这个