I am beginner webdeveloper, I use in my project Laravel 7 and maatwebsite/excel
I have this code:
namespace AppModels; use AppModelsReservation; use MaatwebsiteExcelExcel; use MaatwebsiteExcelConcernsFromCollection; use MaatwebsiteExcelConcernsFromQuery; use MaatwebsiteExcelConcernsWithHeadings; use MaatwebsiteExcelConcernsExportable; class ReservationExport implements FromCollection, WithHeadings { use Exportable; protected $date; public function __construct(string $date) { $this->date = $date; } public function headings(): array { return [ 'LP', 'ID Rezerwacji', 'Adres email', 'Token', 'Data', 'Godzina', 'Tor', 'Płeć', ]; } public function collection() { $res = Reservation::select('id', 'id', 'email', 'token', 'date', 'hour', 'track', 'sex')->where('date', $this->date)->orderBy('time', 'ASC')->orderBy('track', 'ASC')->get(); foreach ($res as $val) { $val->sex = ($val->sex == 1) ? 'kobieta' : 'mężczyzna'; } return $res; } } public function export(Request $request) { return Excel::download(new ReservationExport($request->input('query')), 'reservation-'.$request->input('query').'.xlsx'); }
This code generates an Excel document. It works fine. I would like to add a sequence number in 1 column (1,2,3 etc).
How can I do this?
My model:
class Reservation extends Model { protected $quarded = ['id']; protected $fillable = ['email', 'token', 'date', 'hour', 'track', 'sex', 'time', 'people']; public $timestamps = true; protected $table = 'reservations'; }
Please help
Advertisement
Answer
try this
basically u need to add sn
to heading then in your collection u need to a new key sn
with calculated sequence number
hope it will work if not please tell me what error u r getting
<?php use AppModelsReservation; use MaatwebsiteExcelExcel; use MaatwebsiteExcelConcernsFromCollection; use MaatwebsiteExcelConcernsFromQuery; use MaatwebsiteExcelConcernsWithHeadings; use MaatwebsiteExcelConcernsExportable; class ReservationExport implements FromCollection, WithHeadings { use Exportable; protected $date; public function __construct(string $date) { $this->date = $date; } public function headings(): array { return [ 'SN', // sn new key adding 'LP', 'ID Rezerwacji', 'Adres email', 'Token', 'Data', 'Godzina', 'Tor', 'Płeć', ]; } public function collection() { $res = Reservation::select('id', 'id', 'email', 'token', 'date', 'hour', 'track', 'sex')->where('date', $this->date)->orderBy('time', 'ASC')->orderBy('track', 'ASC')->get(); foreach ($res as $val) { $val->sex = ($val->sex == 1) ? 'kobieta' : 'mężczyzna'; } $res->map(function ($row,$key) { return $row['sn'] = $key; // sn key added to collection }); return $res; } }