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();
        });

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

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

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

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

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

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