Yii 2 中的 ArgumentCountError

ArgumentCountError in Yii 2

我创建了 3 个课程内容。但不幸的是,它只显示了 1 个课程内容,如下图所示。我想要做的是展示我之前创建的所有课程内容。当我用这个语法 运行 时,它 运行 是正常的。

public function actionView($id)
    {
        $dataProvider = new ActiveDataProvider([
            'query' => Coursecontent::findAll()->andFilterWhere(['coursecontent_id' => $id]),
        ]);

        return $this->render('view', [
            'model' => $this->findModel($id), 'dataProvider' => $dataProvider,
        ]);
    }

但是当我把我的代码改成这个的时候。它显示此错误消息。我在这里要做的是展示所有课程内容。 函数 yii\db\BaseActiveRecord::findAll() 的参数太少,在第 57 行的 D:\XAMPP\htdocs\valuefarm\algobox_admin\controllers\CourseController.php 中传递了 0 个参数,正好有 1 个预期

public function actionView($id)
    {
        $dataProvider = new ActiveDataProvider([
            'query' => Coursecontent::findAll()->andFilterWhere(['coursecontent_id' => $id]),
        ]);

        return $this->render('view', [
            'model' => $this->findModel($id), 'dataProvider' => $dataProvider,
        ]);
    }

您不需要为 ActiveDataProvider 获取数据,它会为您完成。

只需提供查询。

public function actionView($id)
{
    $dataProvider = new ActiveDataProvider([
        'query' => Coursecontent::find()->andFilterWhere(['coursecontent_id' => $id]),
    ]);

    return $this->render('view', [
        'model' => $this->findModel($id), 'dataProvider' => $dataProvider,
    ]);
}

您的错误是 findAll() 需要一个条件并将 return 结果,而不是 ActiveQuery 实例。

例如

Coursecontent::findAll(['coursecontent_id' => $id]);