Dcat Admin 列的显示

Dcat Admin 列的显示#

我这里有这么一个需求,根据其中一个列的值,确定另一列的数据来源
主表表结构:

id type item_id num created_at updated_at
1 1 1 20
2 2 1 2
3 1 2 30

另有两个子表: productasset

需求是:当主表的 type 字段值为 1 的时候从子表 asset 取数据,当 type 字段值为 2 的时候从 product 表取数据:
我本想用 when 来实现可没效果,我的代码是这样的:

// 一开始是这样的,可是这样会报错
return Grid::make(new ActivityAward(), function (Grid $grid) {
            $grid->column('id')->sortable();
            $grid->column('activity_id')->display(function () {
                return $this->activity->name;
            });
            $grid->column('awards_type')
                 ->when(1, function (Grid $grid) {
                   $grid->column('awards_id')->using(Asset::assetsTypeLabel());
                 })->when(2, function (Grid $grid){
                  $grid->column('awards_id')->using(Product::getAllLabel());
                })
                 ->using(AwardsModel::$awardsTypeLabel);
            $grid->column('num');
            $grid->column('updated_at')->sortable();
            $grid->filter(function (Grid\Filter $filter) {
                $filter->equal('id');
            });
            $grid->disableViewButton();
        });

// 然后改成了这样,但是改成这样虽然没报错,但结果好像和没判断没啥区别
return Grid::make(new ActivityAward(), function (Grid $grid) {
            $grid->column('id')->sortable();
            $grid->column('activity_id')->display(function () {
                return $this->activity->name;
            });
            $grid->column('awards_type')
                 ->when(1, function () use ($grid) {
                    $grid->column('awards_id')->using(Asset::assetsTypeLabel());
                 })->when(2, function () use ($grid) {
                    $grid->column('awards_id')->using(Product::getAllLabel());
                })
                 ->using(AwardsModel::$awardsTypeLabel);
            $grid->column('num');
            $grid->column('updated_at')->sortable();
            $grid->filter(function (Grid\Filter $filter) {
                $filter->equal('id');
            });
            $grid->disableViewButton();
        });

有没有人碰到过这个情况的?

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

你第一个参数应该是用错了,要布尔值,你给的 1 和 2
file

2年前 评论
laydown (楼主) 2年前

这个你只能使用 display 来判断并 return 你想显示的结果.when 我知道的只能在表单中使用.

2年前 评论
laydown (楼主) 2年前