laravel-admin 自定义导出表单

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);

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112804.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C语言 strstr函数的用法及模拟实现strstr函数「建议收藏」

    C语言 strstr函数的用法及模拟实现strstr函数「建议收藏」C语言strstr函数的用法及模拟实现strstr函数一、strstr函数的用法二、模拟实现strstr函数的功能一、strstr函数的用法1.strstr函数原型:char*strstr(constchar*str1,constchar*str2)2.功能:strstr()是一个参数为两个字符指针类型,返回值是char*类型的函数,它用于找到子串(str2)在一个字符串(str1)中第一次出现的位置。这里因为传进来的地址指向的内容不会在发生改变,所以我们在两个形参(char*)前加上c

    2022年6月25日
    46
  • HTML中的setCapture和releaseCapture

    HTML中的setCapture和releaseCapturesetCapture函数的作用就是将后续的mouse事件都发送给这个对象,releaseCapture就是将鼠标事件还回去,由document、window、object之类的自行来处理。这样就保证了在拖动的过程中,不会由于经过了其它的元素而受到干扰。另外,还有一个很重要的事情是,在Win32上,mousemove的事件不是一个连续的,也就是说,并不是我们每次移动1px的鼠标指针,就会发…

    2022年6月4日
    26
  • Ubuntu 安装Nginx(详细)

    Ubuntu 安装Nginx(详细)1 创建 nginx 账号 root ubuntu usr useradd mnginx

    2025年7月15日
    4
  • 如何查看容器的IP地址和网络相关的参数?

    如何查看容器的IP地址和网络相关的参数?

    2021年9月4日
    86
  • 聚类方法 学习总结

    聚类方法 学习总结1.重点归纳1)聚类的核心概念是相似度(similarity)或距离(distance),有多种相似度或距离的定义。因为相似度直接影响聚类的结果,所以其选择是聚类的根本问题。(1)闵可夫斯基距离(Minkowskidistince),p=2时为欧氏距离,p=1时为曼哈顿距离。(2)马哈拉诺比斯距离(马氏距离)(3)相关系数(4)余弦相似度2)类与类之间的距离(1…

    2022年8月30日
    6
  • jxl.jar下载

    jxl.jar下载jxl.jar给java提供了简单操作Excel的方法:链接:https://pan.baidu.com/s/17HXj_w8E2nM8iIssf2Bmhg提取码:l6t5

    2022年7月26日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号