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 |
另有两个子表: product
和 asset
需求是:当主表的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();
});
有没有人碰到过这个情况的?
你第一个参数应该是用错了,要布尔值,你给的 1 和 2

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