200000μ΄ λ°μ΄ν°λ₯Ό λ΄λ³΄λ΄λ λ°©λ²μ κΈ°λ‘ ν λ. "νμ© λ λ©λͺ¨λ¦¬ ν¬κΈ°κ° 134217728 λ°μ΄νΈ μμ§ λ¨" λ°μ΄ν°λ₯Ό λ΄λ³΄λΌ λμ΄ μμΈκ° λ°μνμ΅λλ€.
yajra / datatableμ λ§μ μμ λ°μ΄ν°λ₯Ό λ΄λ³΄λ΄λ λ€λ₯Έ μ΅μ μ 무μμ λκΉ?
λ§μ μμ λ°μ΄ν°λ₯Ό λ΄λ³΄λ΄λ λ€λ₯Έ λ°©λ²μ μ 곡νμμμ€.
μλ²μ μ νλ μμ λ¨μ΄ μμ΅λλ€.
public function showData(ServiceDataTable $dataTable)
{
return $dataTable
->render('dataTable.renderDataTable');
}
μ΄ λλ μμ²μ μ²λ¦¬νλ €λ©΄ κ³ μ ν Excel νμΌ μμ±κΈ°λ₯Ό ꡬνν΄μΌν©λλ€. ServiceDataTable ν΄λμ€μμ protected function buildExcelFile()
λ©μλλ₯Ό μ¬μ μνκ³ μ²ν¬ λ±μ μν ν μ μμ΅λλ€. μμΈν λ΄μ©μ laravel-excel λ¬Έμλ₯Ό μ°Έμ‘°νμμμ€.
/**
* Build excel file and prepare for export.
*
* <strong i="7">@return</strong> \Maatwebsite\Excel\Writers\LaravelExcelWriter
*/
protected function buildExcelFile()
{
/** <strong i="8">@var</strong> \Maatwebsite\Excel\Excel $excel */
$excel = app('excel');
return $excel->create($this->getFilename(), function (LaravelExcelWriter $excel) {
$excel->sheet('exported-data', function (LaravelExcelWorksheet $sheet) {
$sheet->fromArray($this->getDataForExport());
});
});
}
λ€μ μ½λ μμ± μμΈ
$this->getDataForExport();
μλ² μΈ‘ editColumn()
μ μ λλ μ¬μ©μ μμΈλ₯Ό κ°μ Έμ΅λλ€.
200000 κ°μ λ μ½λκ° μμ΅λλ€.
μ²λ¦¬νμ§ μκ±°λ λ λ§μ λ©λͺ¨λ¦¬λ₯Ό ν λΉνμ§ μκ³ λ°μ΄ν°λ₯Ό κ°μ Έ μ€λ λ€λ₯Έ λ°©λ²μ΄ μμ΅λκΉ?
λ€μ λ§ν¬κ° μμ§λ§ yajra yajra / laravel-datatables-buttons : ^ 3.1 μμ§ Laravel / Excelμ μ§μνμ§ μμ΅λλ€ : 3.0
https://laravel-excel.maatwebsite.nl/docs/3.0/export/queued
쿼리μμ μ§μ λ΄λ³΄λ΄κ±°λ μ λ³μ μΈ λ°©λ²μ΄ μμ΄μΌν©λλ€.
Postmanμ μ¬μ©νμ¬ ν΄λΉ μμ μ λͺ¨λ°©νμ§λ§
134217728 λ°μ΄νΈμ νμ© λ λ©λͺ¨λ¦¬ ν¬κΈ°κ° μμ§λμμ΅λλ€.
μμΈκ° λ°μνμ΅λλ€. htmlμ μμ±νλ λ° μ¬μ© λ νμ΄μκ³ rawColumns ()λ₯Ό μ¬μ©νμ¬ htmlμ μ΄μ€μΌμ΄ν μ²λ¦¬ν©λλ€. λ΄ μΏΌλ¦¬λ phpmyadminμμ 0.420ms, μ²μμλ 1.4 μ΄κ° 걸립λλ€.
μ΄κ²μ λκΈ°μ΄μ λ£μ μ μλ€λ©΄ μλ²μ ν΄λμ μ μ₯ ν λ€μ μ¬μ©μμκ² λ€μ΄λ‘λ ν μμλ λ§ν¬λ₯Ό μ 곡 ν μλ μμ΅λλ€.
μλ΅ ν΄ μ£Όμ μ κ°μ¬ν©λλ€.
JQuery Datatable λλ yajra datatableμμ μ¬μ©νκ³ μμΌλ©° μλ² μΈ‘μμ λ΄λ³΄λ΄κ³ μΆμ΅λλ€.
μλ²μ ν΄λμ μ μ₯νλ κ²μ΄ λΆκ°λ₯νλ€κ³ μκ°ν©λλ€. λ¬Έμ λ₯Ό μΌμΌν€λ λ§μ λ¬Έμ κ° μμ΅λλ€.
λ°μ΄ν° μ€νΈλ¦¬λ°μ΄ νμν©λλ€.
λ°μ΄ν° μμ μλ΅μΌλ‘ 20MB μ΄μμ λλ€.
λ΄ μꡬ μ¬νμ λΉμ·νμ§λ§ νμΌμ μλ² (λλ S3)μ μ μ₯νκ³ λ΄ μ ν리μΌμ΄μ λμ 보λ λλ μ΄λ©μΌμμ λ€μ΄λ‘λ ν μμλ λ§ν¬λ₯Ό μ 곡νκ³ μΆμ΅λλ€. μ¬κΈ°μμ μ λ°μ΄νΈ ν λ΄μ©μ μ°ΎμΌλ©΄μ΄ μμ μ μν ν κ°λ₯μ±μ΄ μμ΅λλ€.
λ§μ μμ λ¨μ μλΉνκ³ κΈ°λ³Έ μ€ν¬λ¦½νΈ λ©λͺ¨λ¦¬ ν λΉ ν¬κΈ°κ° 60MB μΈ μλ² μΈ‘ μ²λ¦¬μ λ¬Έμ κ° μμ΅λλ€.
php.iniμ memory_limit μ΄ν΄λ³΄κΈ°
μ€ν μκ° μ ν max_execution_time
μ 60μ
λλ€.
κ°μ λλ¦° ν μλ² μΈ‘ λ΄λ³΄λ΄κΈ°λ₯Ό μ¬μ©νμ¬ μμ²ν μ μμ΅λλ€.
λ€μ΄λ‘λ λμ νμΌμ μ μ₯νλλ‘ μμ κΈ°λ₯μ μμ νλλ°, νμΌμ storage / exports / ν΄λμ μ μ₯νκ³ μμ΅λλ€.
public function excel()
{
$this->buildExcelFile()->store('xls');
}
νμ¬ λ΄ κ°λ° νκ²½μ λ§μ μμ λ°μ΄ν°κ° μμ΅λλ€. μμ μ€μ μ λ³κ²½νκ³ λ©λͺ¨λ¦¬ μΊ‘μ λλ¬νμ§ μκ³ ν΄λΉ ν΄λμμ Excelμ λ§λ€ μ μλμ§ νμΈν μ μμ΅λκΉ?
μ£Όλͺ©ν΄μΌ ν λ λ€λ₯Έ μ¬νμ Laravel 5.1μ μ¬μ©νκ³ μμΌλ―λ‘ maatwebsite / excel λ²μ 2.1μ μ¬μ©νκ³ μμ΅λλ€.
μ κ° μ λ§λ‘νκ³ μΆμ κ²μ μ΄κ²μ λμ λκΈ°μ΄μ λ£κ³ λ³΄κ³ μ μμ±μ΄ μ§ν μ€μ΄λΌλ λ©μμ§μ ν¨κ» νμ΄μ§λ‘ λμκ°μ νμΌμ λ€μ΄λ‘λ ν μμλ λ§ν¬κ° λ±λ‘ λ IDλ‘ μ μ‘λλ κ²μ λλ€. "
2.1 λ²μ μμλ μ΄λ»κ² λκΈ°μ΄μ λ£μμ§ λͺ¨λ₯΄κ² μ§λ§ "
κ·Έλμ μ΄κ²μ λν μ λ°μ΄νΈκ° μμ΅λκΉ?
κ·Έλμ μ΄κ²μ λν μ λ°μ΄νΈκ° μμ΅λκΉ?
Laravel Excel 3.0 μ΄μμ μ¬μ©νλ μ¬λμ μμ μ루μ
μ΄ μλνμ§ μμ΅λλ€. λ°λΌμ "Queued Export"λ₯Ό μ¬μ©νμ¬ buildExcelFile()
λ₯Ό μ¬μ μν΄μΌν©λλ€.
μλλ©΄ λ΄κ° λν μ²ν¬ μ¬μ©νμ§λ§ λ΄ μΌμ λ΄ νΉμ± λ° μ¬μ© CSVλ₯Ό μμ±νμ¬ λ€λ₯Έ λκ°λ₯Όνκ³ ,μ΄ μ
μ΄λ€ μ λ°μ΄νΈ?
Laravel 6λΆν°λ LazyCollectionsλ₯Ό μ¬μ©νμ¬ ν λ²μ νλμ νλͺ© λ§ λ©λͺ¨λ¦¬μλ‘λ ν μ μμ΅λλ€. μ΄κ²μ λ©λͺ¨λ¦¬ λΆμ‘± λ¬Έμ λ₯Ό ν΄κ²°ν©λλ€.
DataTable ν΄λμ€λ₯Ό νμ₯νκ³ μ‘°μ λ DataTablesExportHandlerλ₯Ό μμ±νκΈ° λ§νλ©΄λ©λλ€.
μ¦κ²¨!
@singhofmarco μμ λ₯Ό λ§λ€ μ μμ΅λκΉ?
@singhofmarco λμν©λλ€. μλ μ LazyCollectionsλ₯Ό νμ©ν v10 νλ‘μ νΈλ₯Ό μμνμ§λ§ atmμ κ³μν μλ μμ΅λλ€.
λλ λ€λ₯Έ κΈΈμ κ°λ€. csv ν¨μλ₯Ό μ¬μ μνμ¬ λ§€λ² ν νμ΄μ§μ λ°μ΄ν°λ‘ DataTablesλ₯Ό νΈμΆνμ¬ ν¨κ³Όμ μΌλ‘ μ²νΉνμ΅λλ€. νμΌμ΄ μλ£ λ λκΉμ§ κ²°κ³Ό νμ fputcsv
λ₯Ό μ¬μ©ν λ€μ νμΌ λ΄μ©μ Laravel μλ΅μ λ°νν©λλ€.
λ©λͺ¨λ¦¬ μ νμ λ μ΄μ λλ¬νμ§ μμλΏλ§ μλλΌ (CSV μμ²΄κ° PHP λ©λͺ¨λ¦¬ μ νμ μ΄κ³Ό ν λκΉμ§ μ€νΈλ¦¬λ° μλ΅μ΄ λ λμμ΄ λ μ μμ) λ λ°° μ΄μ λΉ λ¦ λλ€.
@ameenross κ°λ₯νλ€λ©΄ μ½λλ₯Ό 곡μ ν΄μ£ΌμΈμ.
@karmendra Yajra Datatablesμ μ΄μ λ²μ μ΄κΈ° λλ¬Έμ μνμ§ μμ΅λλ€. νμ§λ§ κΈ°λ³Έμ μΌλ‘ λ΄κ°νλ μΌμ μμ²μμ μΌλΆ νμ΄μ§ κΈΈμ΄ κ°μ λ³ν©νκ³ μΌλ°μ μΌλ‘ AJAXμ λν λ°μ΄ν° νμ΄μ§λ₯Ό λ°ννλ μ½λλ₯Ό νΈμΆνλ κ²μ
λλ€ (μ κ²½μ° $this->ajax()->getData(true)['data']
). getCsv
ν¨μλ₯Ό μ¬μ©νμ¬ Yajra Datatable ν΄λμ€λ₯Ό νμ₯νλ λ°μ΄ν° ν
μ΄λΈμ λν κΈ°λ³Έ ν΄λμ€κ° μμ΅λλ€ (κ²°κ΅ CSV ν¨μλ₯Ό μ¬μ μνμ§ μκΈ°λ‘ κ²°μ νμ§λ§ μ€μνμ§ μμ). λ μ΄μ λ¨μ νμ΄μ§κ° μμ λκΉμ§ λ°λ³΅λ©λλ€.
@ameenross λμμ΄ λμ ¨μ΅λλ€. λλ μ΄κ²μ μλ ν κ²μ΄λ€.
λΌ λΌλ²¨ λ°μ΄ν° ν
μ΄λΈ :: v1.5.0
@TheGeekyM λκΈμ κΈ°λ°μΌλ‘ ν λ΄ μ루μ
μ λ€μκ³Ό κ°μ΅λλ€. λ€λ₯Έ μ¬λμκ² λμμ΄ λ μ μλλ‘ λ¨κ²¨ λ‘λλ€.
FromQueryλ₯Ό ꡬννλ ChunkedDatatableExportHandler ν΄λμ€λ₯Ό λ§λ λ€μ ServiceDataTablesμμ buildExcelFile λ©μλλ₯Ό μ¬μ μνμ¬ μ¬μ©νμ΅λλ€.
<?php
namespace App\DataTables;
use Yajra\DataTables\Services\DataTable;
class ServiceDataTable extends DataTable
{
protected $exportClass = ChunkedDatatableExportHandler::class;
protected function buildExcelFile()
{
$query = app()->call([$this, 'query']);
$query = $this->applyScopes($query);
$dataTable = app()->call([$this, 'dataTable'], compact('query'));
$dataTable->skipPaging();
$data_query = $dataTable->getFilteredQuery();
return new $this->exportClass($data_query);
}
}
<?php
namespace App\DataTables;
use Illuminate\Database\Query\Builder;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;
class ChunkedDatatableExportHandler implements FromQuery, WithHeadings
{
use Exportable;
/**
* <strong i="11">@var</strong> Builder
*/
protected $query;
/**
* ChunkDatatablesExportHandler constructor.
* <strong i="12">@param</strong> Builder $query
*/
public function __construct(Builder $query)
{
$this->query = $query;
}
/**
* <strong i="13">@return</strong> array
*/
public function headings(): array
{
$first = $this->query()->first();
if ($first) {
return array_keys((array)$first);
}
return [];
}
/**
* <strong i="14">@return</strong> Builder
*/
public function query()
{
return $this->query;
}
}