Php 在Yi2 Gridview中显示元素

Php 在Yi2 Gridview中显示元素,php,ajax,yii2,yii-extensions,yii2-advanced-app,Php,Ajax,Yii2,Yii Extensions,Yii2 Advanced App,我试图在控制器的yii2 view操作中显示网格视图,但在非对象上调用成员函数getTotalCount()时出错 我有两个相关表格,即表格案例,与表格原告相关,如下所示 案例模型coe: public function getAccusers() { return $this->hasMany(Accuser::className(), ['case_ref_no' => 'ref_no']); } 原告模型关系 public function getCaseR

我试图在控制器的yii2 view操作中显示网格视图,但在非对象上调用成员函数getTotalCount()时出错

我有两个相关表格,即表格案例,与表格原告相关,如下所示

案例模型coe:

    public function getAccusers()
{
    return $this->hasMany(Accuser::className(), ['case_ref_no' => 'ref_no']);
}
原告模型关系

 public function getCaseRefNo()
{
    return $this->hasOne(Cases::className(), ['ref_no' => 'case_ref_no']);
}
在案例控制器中,操作索引有一个网格视图,我在其中选择了视图操作

在view action中,我通过了grid view,基本上我希望它能够显示与某个案件相关的原告记录(即与上述关系相同的案件编号)

案例控制器代码:操作视图

public function actionView($id)
{          
     $dataProvider = Accuser::find()
     ->where(['case_ref_no'=>$id])
    ->all();

    return $this->render('view', [
        'dataProvider' => $dataProvider,
    'model' => $this->findModel($id),
    ]);
}
查看页面(代码)

                 <?= GridView::widget([
                            'dataProvider' => $dataProvider,
                            'showPageSummary' =>false,
                            //'filterModel' => $searchModel,
                            'columns' => [
                                ['class' => 'yii\grid\SerialColumn'],


                                ['class' => 'yii\grid\ActionColumn'],
                            ],
                        ]); ?>
}

var_dump($dataProvider);在我得到的视图中(将find()->all()更改为find()之后


将您的操作更改为此

public function actionView($id)
{          
    $dataProvider = Accuser::find()
    ->where(['case_ref_no'=>$id]);


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

gridview与dataprovider一起工作,查找结果是您的数据提供程序。如果在查找$dataprovider变量后使用all(),则$dataprovider变量是原告对象的数组!

对于数据提供程序,您应使用适当的类(ActiveDataprovider、ArrayDataProvider或SqlDataProvider)创建 这样做并不像您所做的那样直接形成查询

    $query = Accuser::find()
         ->where(['case_ref_no'=>$id]);

   $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);
如果您认为问题也与摘要有关,则应避免使用此选项

 'summary'=>"", 
这边

<?= GridView::widget([

     'dataProvider' => $dataProvider,
     'summary'=>"", 

显示原告模型请添加原告模型#scaisedge变量转储($dataProvider)结果是什么?变量转储($ataProvider)结果数组(size=1)0=>object(frontend\models\consumer)[65]private'\u属性(yii\db\BaseActiveRecord)=>array(size=6)'id'=>int 1'fname'=>string'aa'(长度=2)'secname'=>string'mwangi'(长度=6)'date\u of_birth'=>string'2015-11-11'(长度=10)'case\u ref\u no'=>string'(长度=11)'idno'=>string'(长度=0)private'\u oldAttributes'(yii\db\BaseActiveRecord)=>数组(大小=6)'id'=>int 1'fname'=>字符串'aa'(长度=2)'secname'=>字符串'mwangi'(长度=6)'出生日期'=>字符串'2015-11-11'(长度=10)'case#ref_no'=>字符串'#reradar'(长度=11)'idno'=>字符串'(长度=0)私有'(相关'(yii\db\BaseActiveRecord)=>数组(大小=0)空私有“\u错误”(yii\base\Model)=>空私有“\u验证程序”(yii\base\Model)=>空私有“\u场景”(yii\base\Model)=>字符串“默认”(长度=7)私有“\u事件”(yii\base\Component)=>数组(大小=0)空私有“\u行为”(yii\base\Component)=>array(size=0)empty我已经用数据提供程序的var\u dump值更新了问题以获得更高的可视性,即使在这样做之后,我仍然会收到调用未知方法的相同错误:yii\db\ActiveQuery::getTotalCount()。我已经更新了答案。我认为您没有正确创建数据提供程序。
    $query = Accuser::find()
         ->where(['case_ref_no'=>$id]);

   $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);
 'summary'=>"", 
<?= GridView::widget([

     'dataProvider' => $dataProvider,
     'summary'=>"",