laravel-admin 自定義導出表單


官方導出文檔

laravel-admin自帶的導出excel會導出與此模型關聯的其他數據。所以參考官方文檔調整代碼

文章表:id,title,user_id

用戶表:id,username

//文章模型關聯用戶
    public function user(){
        return $this->belongsTo(User::class, 'user_id', 'id'); }

 

//ExcelExporter.php
<?php
namespace App\Admin\Extensions;

use Encore\Admin\Grid;
use Encore\Admin\Grid\Exporters\AbstractExporter;
use Maatwebsite\Excel\Facades\Excel;

class ExcelExpoter extends AbstractExporter
{
    protected $head = [];
    protected $body = [];
    public function setAttr($head, $body){
        $this->head = $head;
        $this->body = $body;
    }

    public function export()
    {
        Excel::create('Filename', function($excel) {
            $excel->sheet('Sheetname', function($sheet) {
                // 這段邏輯是從表格數據中取出需要導出的字段
                $head = $this->head;
                $body = $this->body;
                $bodyRows = collect($this->getData())->map(function ($item)use($body) {
                    foreach ($body as $keyName){
                        $arr[] = array_get($item, $keyName);
                    }
                    return $arr;
                });
                $rows = collect([$head])->merge($bodyRows);
                $sheet->rows($rows);
            });
        })->export('xls');
    }
}

使用方法:

            $excel = new ExcelExpoter();
            $excel->setAttr(['id', '標題', '作者'], ['id', 'title', 'user.username']);
            $grid->exporter($excel);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM