Dact-admin如何导出模型关联字段的值
现在使用dact-admin2对数据展示用到了模型关联,然后导出excel的时候无法导出我模型关联表中的字段的值.
例如,a表字段1,2,3,b表字段,4,5,6.数据展示页面展示数据字段为1,2,3,5.数据可以正常显示,但是导出excel无法导出5字段这一列的值,有什么办法可以解决吗?不想重新自定再写一个导出excel
protected function grid()
{
$languageId = 1;
$locale = config('app.locale');
switch ($locale) {
case 'zh_CN':
$languageId = 1;
break;
case 'en':
$languageId = 2;
break;
}
return Grid::make(new ShopItemSales(), function (Grid $grid) use($languageId){
$grid->model()->where('type', 2)->with(['goodsPrototype.i18nSentence.translations' => fn($q) => $q->where('language_id', $languageId)]);
// $grid->column('id', 'ID')->sortable();
$grid->column('date', 'date')->display(function ($date) {
return $date;
});
$grid->column('date_type', 'date type')->display(function ($type) {
return $type === 'D' ? 'D' : ($type === 'W' ? 'W' : 'M');
});
$grid->column('shop_id', 'shop ID');
$grid->column('translation', 'shop name')->display(function () use ($languageId) {
return $this->goodsPrototype?->i18nSentence?->translations
->where('language_id', $languageId)
->first()?->translation ?? '未翻译';
});
$grid->column('shop_count', 'shop Number');
// 禁用创建按钮
$grid->disableCreateButton();
$grid->disableActions();
$grid->disableBatchDelete();
$grid->disableRowSelector();
$grid->scrollbarX();
// 设置表格工具栏
$grid->toolsWithOutline(false);
$grid->option('bordered', true);
$grid->option('striped', false);
$date_type = request('date_type', 'D');
$start_date = request('date.start');
$end_date = request('date.end');
$params =[
'type'=>2,
'date_type'=>$date_type,
'start_date'=>$start_date,
'end_date'=>$end_date,
'language_id'=>$languageId
];
// 启用导出功能
$grid->export()->filename('SHOP_ITEM_SALES_cash_purchase_'.date('Ymd'));
//$grid->export(new ShopItemSalesExport($params))->filename('SHOP_ITEM_SALES_cash_purchase_'.date('Ymd'));
// 启用分页
$grid->paginate(10);
// 添加筛选器
$grid->filter(function (Grid\Filter $filter) {
$filter->disableIdFilter();
$filter->equal('date_type', __('kpi.type'))->select(function () {
return (new ShopItemSales())->getDateTypeOptions();
})->default('D')->width(2);
$filter->between('date', __('kpi.date_range'))->date()->default([
'start' => request('date.start', Carbon::now()->subDays(30)->toDateString()),
'end' => request('date.end', Carbon::now()->toDateString()),
])->width(3);
$filter->expand(true); // 默认展开筛选框
$filter->panel(); // 使用面板样式
});
});
}
推荐文章: