@kost_p
новичок

Как создать новую колонку при экспорте таблицы используя Laravel, maatwebsite/excel?

Здравствуйте! Подскажите пожалуйста, как создать новую колонку в экспортируемой(в excel) таблице? Есть таблица в БД такого вида:
5f26ca148223d812665543.png
Установил с помощью composer пакет для экспорта maatwebsite/excel. Так же есть файл модели:
class ScheduledInspectionModel extends Model
{
    protected $table = 'scheduled_inspection'; // название таблицы
    protected $fillable = ['name_smp', 'name_control', "verification_start", "verification_end", 'verification_duration'];
    public $timestamps = false;
}

Контроллер:
class OrganizationsExportController extends Controller
{
    public function export()
    {
        return (new OrganizationsExport)->download('organizations_export.xls');
    }
}

И файл с описанием экспорта:
class OrganizationsExport implements FromCollection, ShouldAutoSize, WithHeadings, WithEvents
{
    use Exportable;
    /**
     * @return \Illuminate\Support\Collection
     */
    public function collection()
    {
        return ScheduledInspectionModel::all();
    }

    public function headings(): array
    {
        return [
            'id',
            'Проверяемый СМП',
            'Контролирующий орган',
            'Начало проверки',
            'Окончание проверки',
            'Плановая длительность'
        ];
    }

    public function registerEvents(): array
    {
        return [
            AfterSheet::class => function (AfterSheet $event) {
                $event->sheet->getStyle('A1:F1')->applyFromArray([
                    'font' => [
                        'bold' => true
                    ]
                ]);
            }
        ];
    }

Экспортируемая таблица выглядит так:
5f26cacfa9f25491944233.png
Экспорт работает :) Но я хочу сделать, чтобы на месте колонки id( её я могу исключить с помощью map() и в Модели ), была колонка 'Номер' и в нее заносить соответственно нумерацию строк. Подскажите пожалуйста, как это сделать?
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
@kost_p Автор вопроса
новичок
добавил\обновил в OrganizationsExport следующее:
...
private $count = 0;

    public function map($organizations): array
    {
        return [
            ++$this->count,
            $organizations->name_smp,
            $organizations->name_control,
            $organizations->verification_start . ' - ' . $organizations->verification_end,
            $organizations->verification_duration,

        ];
    }

    public function headings(): array
    {
        return [
            '№',
            'Проверяемый СМП',
            'Контролирующий орган',
            'Период плановой проверки',
            'Плановая длительность',
        ];
    }
...

Вот как в БД:
5f2710b3ca8a4246567295.png
Вот как в excel файле:
5f2710c14baa5551548549.png
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы