Skip to content
Advertisement

Addition of an ordinal number in the Laravel Model

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;
    }
}

User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement