我试图将记录导出到CSV,CSV查询关系,但我的文件一直只返回标题。
我正在利用laravel软件包来做这件事。
控制器方法
public function export(Team $team)
{
return Excel::download(new TeamMembersExport(), 'team_members.csv');
}团队方法
public function members(){
return User::with('games')->whereHas('games', function ($q) {
$q->where('team_id', $this->id);
})->get();
}导出文件
class ProviderMembersExport implements WithMapping, WithHeadings
{
public function map($team): array
{
$members = $team->members()->only([
'name',
'team_number',
'date_of_birth'
]);
return $members->all();
}
public function headings(): array
{
return [
'Name',
'Team Number',
'Date of Birth'
];
}
}我是不是在映射方法中写错了这个?
发布于 2021-05-07 01:05:33
有几个突出的问题。
您从未将method.
$team的目标,它要求首先使用From关注点之一将数据填充到导出实例中:FromQuery、FromCollection、FromArray、FromView好消息是,这一切都是可以通过一些调整来解决的。
控制器
public function export(Team $team)
{
// pass the team model into the export
return Excel::download(new TeamMembersExport($team), 'team_members.csv');
}出口
// add FromCollection concern
class ProviderMembersExport implements FromCollection, WithMapping, WithHeadings
{
use Exportable;
// a place to store the team dependency
private $team;
// use constructor to handle dependency injection
public function __construct(Team $team)
{
$this->team = $team;
}
// set the collection of members to export
public function collection()
{
return $this->team->members();
}
// map what a single member row should look like
// this method will iterate over each collection item
public function map($member): array
{
return [
$member->name,
$member->team_number,
$member->date_of_birth,
];
}
// this is fine
public function headings(): array
{
return [
'Name',
'Team Number',
'Date of Birth'
];
}
}https://stackoverflow.com/questions/67421841
复制相似问题