使用hasOne联查的数据,同样实现在列表中的排序功能 [ 2.0 版本 ]
之前有个问题一直挺困扰的,就是yii2的gridview实现的列表,列表头部可以实现排序功能,甚是好用,但是在使用hasOne联查的时候,排序就不好用了,今天终于解决这个问题了,代码如下:
控制器:
public function actionList()
{
$where['storeid'] = $this->storeid;
$where['status'] = [Table::STATUS_NORMAL, Table::STATUS_PEND];
$model = new ActiveDataProvider([
'query' => Table::find()->where($where)->with(
[
'tableType'=>function($query){
$query->andWhere(['status'=>Table::STATUS_NORMAL,'storeid'=>$this->storeid]);
},
'area'=>function($query){
$query->andWhere(['status'=>Table::STATUS_NORMAL,'storeid'=>$this->storeid]);
},
]
),
'pagination' => [
'pageSize' => 10,
],
]);
//添加以下代码,自定义排序
$model->setSort([
'attributes' => [
'area.areaname' => [
'asc' => ['areaid' => SORT_ASC],
'desc' => ['areaid' => SORT_DESC],
'label' => '餐桌楼层'
],
'tablenum'=>[
'asc'=>['tablenum'=>SORT_ASC],
'desc' => ['tablenum' => SORT_DESC],
'label' => '餐桌排序'
]
]
]);
return $this->render('list', [
'model' => $model,
]);
}
视图:
'columns' => [
[
'class' => 'yii\grid\CheckboxColumn'
], //复选框列
'id',
'tablenum',
[
'label'=>'餐桌名称','value'=>'tablename'
],
'area.areaname', //这里的名称会调用area模型中的attribute
],
这样就可以了!
小程府 北京
注册时间:2016-03-23
最后登录:2021-02-09
在线时长:30小时31分
最后登录:2021-02-09
在线时长:30小时31分
- 粉丝13
- 金钱255
- 威望100
- 积分1555
共 0 条评论