В любом бизнес-приложении рано или поздно просят две вещи: «скачать как Excel» и «дайте PDF-счёт». В Laravel это решают пакеты: Laravel Excel (maatwebsite/excel) для таблиц, DomPDF или Browsershot для PDF.
composer require maatwebsite/excel
composer require barryvdh/laravel-dompdfКласс экспорта
Экспорт — это класс, который перечисляет свои возможности через интерфейсы. FromQuery отдаёт данные, WithHeadings — первую строку, WithMapping — формат каждой строки.
<?php
namespace App\Exports;
use App\Models\Order;
use Illuminate\Database\Eloquent\Builder;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
class OrdersExport implements FromQuery, WithHeadings, WithMapping
{
use Exportable;
public function __construct(private int $year) {}
public function query(): Builder
{
return Order::query()
->with('customer')
->whereYear('created_at', $this->year);
}
public function headings(): array
{
return ['ID', 'Customer', 'Total', 'Date'];
}