Nae*_*Ali 0 gridview sum yii yii2 yii2-advanced-app
我是新来的,我不能在这里发表评论
当我试图在页脚中获得总和时,我遇到了问题.
我在控制器中的代码:
$searchModel = new ReceiptsSearch();
$sum = new ReceiptsSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'sum'=>$sum,
]);
Run Code Online (Sandbox Code Playgroud)
我的SearchModel代码:
public function search($params)
{
$query = Receipts::find();
$sum = $query->sum('price');
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
return $dataProvider;
}
$query->joinWith('patient');
$query->andFilterWhere([
'id' => $this->id,
'price' => $this->price,
'reg_date' => $this->reg_date,
]);
$query->andFilterWhere(['like','patient.patient_name',$this->patient_id]);
return $dataProvider;$sum;
}
Run Code Online (Sandbox Code Playgroud)
我的观点页面
<?= GridView::widget([
'dataProvider' => $dataProvider,$sum,
'filterModel' => $searchModel,
'showFooter' => true,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'attribute'=>'patient_id',
'value'=>'patient.patient_name'
],
'price',
],
[
'attribute' => 'sum',
'footer' => 'sum',
],
['class' => 'yii\grid\ActionColumn'],
],
]);
?>
Run Code Online (Sandbox Code Playgroud)
显示的信息是:
设置未知属性:yii\grid\GridView :: 0
Ins*_*ull 10
调节器
$searchModel = new ReceiptsSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
Run Code Online (Sandbox Code Playgroud)
SearchModel
public function search($params)
{
$query = Receipts::find()->joinWith('patient');
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) {
return $dataProvider;
}
$query->andFilterWhere([
'id' => $this->id,
'price' => $this->price,
'reg_date' => $this->reg_date,
]);
$query->andFilterWhere(['like','patient.patient_name',$this->patient_id]);
return $dataProvider;
}
Run Code Online (Sandbox Code Playgroud)
视图
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'showFooter' => true,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'attribute' => 'patient_id',
'value' => 'patient.patient_name'
],
[
'attribute' => 'price',
'footer' => Receipts::getTotal($dataProvider->models, 'price'),
],
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
Run Code Online (Sandbox Code Playgroud)
收据模型
public static function getTotal($provider, $fieldName)
{
$total = 0;
foreach ($provider as $item) {
$total += $item[$fieldName];
}
return $total;
}
Run Code Online (Sandbox Code Playgroud)