Php 在Yi2 Gridview中显示元素
我试图在控制器的yii2 view操作中显示网格视图,但在非对象上调用成员函数getTotalCount()时出错 我有两个相关表格,即表格案例,与表格原告相关,如下所示 案例模型coe: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
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'=>"",