DcatAdmin 在grid里面使用了display方法之后,如何在进行筛选或者排序
根据官方文档,在grid里面可以通过如下方式排序
$grid->user_id->filter(
Grid\Column\Filter\Equal::make()->valueFilter()
);
如果是user与post一对多的关系
Post model
public function user(){
return $this->belongsTo(User::class,'uid','id');
}
PostController
protected function grid()
{
return Grid::make(new Post(['user']), function (Grid $grid) {
$grid->column('user.name','用户')->filter(
Grid\Column\Filter\Equal::make()->valueFilter()
);
});
}
下面的办法,是之前写的,有缺陷的
但是这样写了筛选之后,下面的这个display方法就失效了。
$grid->column('user_id')->display(function($user_id){
return User::find($user_id)->name;
});
$grid->user_id->filter(
Grid\Column\Filter\Equal::make()->valueFilter()
);
想请教一下大神,如果这样筛选后,还如何去显示这个$user->name
呢
定义user模型关联,然后在new Grid时,with预加载user模型,然后使用user.name即可关联关系《Dcat Admin 中文文档》
如果你在display里面用find user_id的形式,会导致n+1问题,一百行数据查一百多次