ArrayDataProvider 中的默认 id

default id in ArrayDataProvider

当我使用

    $searchModel = new UserSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

然后在 gridview 中使用此数据提供程序并像这样在操作中获取选定的行

   if (Yii::$app->request->post()) {
   $selectedUser = $_POST['selection'];
   }

它工作正常,我有这样的数组 ([0] => 5 [1] => 7),其中 5 和 7 是用户的 id。

但是当我像这样在 $dataprovider 中使用某些条件时 例如

$modelUser = User::find()
        ->where(['class' => $model->class_id])
        ->all();
    $dataProvider = new ArrayDataProvider([
        'allModels' => $modelUser,
        'pagination' => [
            'pageSize' => 50,
        ],
    ]);

然后在 gridview 中使用这个提供程序,现在当我使用

  if ($model->load(Yii::$app->request->post())) {
  $selectedUsers = $_POST['selection'];
  }

它给出这样的数组 Array ( [0] => 0 [1] => 1 [2] => 2 )
意思是说它不提供用户的 ID。我需要选定的用户 ID。

我自己解决了。只需在数组数据提供者中添加一个键

$dataProvider = new ArrayDataProvider([
    'allModels' => $modelUser,
    'Key' => 'id',
    'pagination' => [
        'pageSize' => 50,
    ],
]);