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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
DogLoML
最佳答案

定义user模型关联,然后在new Grid时,with预加载user模型,然后使用user.name即可关联关系《Dcat Admin 中文文档》

如果你在display里面用find user_id的形式,会导致n+1问题,一百行数据查一百多次

1年前 评论
francisco_v (楼主) 1年前
讨论数量: 2
DogLoML

定义user模型关联,然后在new Grid时,with预加载user模型,然后使用user.name即可关联关系《Dcat Admin 中文文档》

如果你在display里面用find user_id的形式,会导致n+1问题,一百行数据查一百多次

1年前 评论
francisco_v (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!