我只想将选择值导出为excel,而不导出视图刀片中表中的所有内容。我不知道如何在excel函数中编写过滤器查询。
我正在使用Maatwebsite 3.1和Laravel 5.8。我已经创建了控制器,视图刀片,导出功能和过滤条件。
控制器
public function gameReport(Request $request)
{
$games = DB::table('games as g')
->select(
'g.title',
'g.game_code',
'g.game_name',
'g.game_answer1',
DB::raw('DATE(g.created_at) as created_date')
)
->orderByRaw('g.created_at DESC');
$start_date = $request->start_date;
$end_date = $request->end_date;
$render=[];
if(isset($request->game_code))
{
$games=$games->where('game_code','like','%'.$request->game_code.'%');
$render['game_code']=$request->game_code;
}
$games= $games->orderBy('created_at','DESC');
$games= $games->paginate(15);
$games= $games->appends($render);
$data['games'] = $games;
return view('report.gameReport',$data);
}
public function exportgames()
{
return Excel::download(new GamesExport, 'games.xlsx');
}
GameExport.php
class GamesExport implements FromQuery, WithHeadings, ShouldAutoSize, WithEvents
{
use Exportable;
public function query()
{
return BbnaijaGames::query()->select(
DB::raw("DATE(created_at)"),
'title',
'game_code',
'game_answer1'
);
}
public function headings(): array
{
return [
'Date Created',
'Title',
'Game Code',
'Game Answer1',
];
}
public function registerEvents(): array
{
return [
AfterSheet::class => function(AfterSheet $event) {
$cellRange = 'A1:M1'; // All headers
$event->sheet->getDelegate()->getStyle($cellRange)->getFont()->setSize(14);
},
];
}
查看(gameReport.blade.php)
<div class="row" style="margin-bottom: 10px">
{{ Form::model(request(),['method'=>'get']) }}
<div class="col-sm-4">
{{ Form::text('game_code',null,['class'=>'form-control','placeholder'=>'Game Code']) }}
</div>
<div class="col-sm-2">
</div>
<div class="col-xs-2">
{{ Form::submit('Search',['class'=>'btn btn-warning']) }}
<a href="{{ route('gamesexport') }}" class="btn btn-primary"><i class="fa fa-file-excel-o"></i> Excel</a>
</div>
{{ Form::close() }}
</div>
@foreach($games as $key => $game)
<tr>
<td>{{ ++$key }}</td>
<td>{{ $game->created_date }}</td>
<td>{{ $game->title }}</td>
<td>{{ $game->game_code }}</td>
<td>{{ $game->game_answer1 }}</td>
</tr>
@endforeach
我希望只能将过滤后的数据导出到excel。我在视图刀片的控制器中编写了此代码。但是我不知道如何在导出功能中做到这一点。