@Talinon I have this updated code where I can download 10,000 below data but if more than 10,000 records are will error
local.ERROR: Allowed memory size of 268435456 bytes exhausted (tried to allocate 4096 bytes) {"userId":16,"exception":"[object] (Symfony\Component\ErrorHandler\Error\FatalError(code: 0): Allowed memory size of 268435456 bytes exhausted (tried to allocate 4096 bytes) at /var/www/admin-backend/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Worksheet.php:3318)
code that working right now for 10,000 records below
<?php
namespace App\Exports;
use App\Models\Pvp;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Excel;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\RemembersChunkOffset;
use Maatwebsite\Excel\Concerns\WithChunkReading;
class PvpExport implements FromQuery, WithStyles, WithHeadings, ShouldAutoSize, WithChunkReading
{
use Exportable;
use RemembersChunkOffset;
private string $writerType = Excel::XLSX;
protected $startDate;
protected $endDate;
protected $mode;
public function __construct($startDate, $endDate, $mode)
{
$this->startDate = $startDate;
$this->endDate = $endDate;
$this->mode = $mode;
}
public function query()
{
$query = Pvp::select(
'id',
'match_id',
'player_id_1',
'player_id_2',
'winner_id',
'room_id',
'type',
'rake',
'player_1_level_1_id',
'player_1_level_2_id',
'player_2_level_1_id',
'player_2_level_2_id',
'player_1_level_1_commission',
'player_1_level_2_commission',
'player_2_level_1_commission',
'player_2_level_2_commission',
'gold_reward',
'mmr',
'mmr_enabled',
'ends_at',
'disbursement_completed_at',
'waiting_time'
)
->when($this->mode !== 'all', function ($query) {
return $query->where('type', $this->mode);
})
->when($this->startDate && $this->endDate, function ($query) {
return $query->whereDate('created_at', '>=', $this->startDate)
->whereDate('created_at', '<=', $this->endDate);
});
return $query;
}
public function headings(): array
{
return [
'ID',
'Match ID',
'Player ID 1',
'Player ID 2',
'Winner ID',
'Room ID',
'Type',
'Rake',
'Player 1 Level 1 ID',
'Player 1 Level 2 ID',
'Player 2 Level 1 ID',
'Player 2 Level 2 ID',
'Player 1 Level 1 Commission',
'Player 1 Level 2 Commission',
'Player 2 Level 1 Commission',
'Player 2 Level 2 Commission',
'Gold Reward',
'MMR',
'MMR_enabled',
'Ends At',
'Disbursement Completed At',
'Waiting Time',
];
}
public function styles(Worksheet $sheet)
{
return [
1 => ['font' => ['bold' => true]],
];
}
public function chunkSize(): int
{
return 1000; // Adjust the chunk size as per your needs
}
}