laravel - 使用 Maatwebsite/Laravel-Excel 生成 csv 文件如何使标题返回动态数组

标签 laravel laravel-5 maatwebsite-excel

在 laravel 5.8 中生成 csv 文件,我使用 https://github.com/Maatwebsite/Laravel-Excel 插件,它工作正常,但是当我使用标题方法来生成标题时 https://docs.laravel-excel.com/3.1/exports/mapping.html

我需要根据从数据库获得的结果集设置标题:

<?php

namespace App\Exports;

use Auth;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;

class exportSearchResults implements FromCollection, WithHeadings
{
    public function collection()
    {
        $searchResultRows = SearchResult
            ::getByUserList($this->user_list_id)
            ->select( 'source_id' )
            ->groupBy( 'source_id' )
            ->orderBy('source_id', 'asc')
            ->get()
            ->toArray();
            ...
        return $searchResultRows;
    }

    public function headings(): array
    {
        return [
            'field',
            'value',
        ];
        // I need Somehow to return content of this array based on $searchResultRows array in collection method
    }

}

有这样的办法吗?

最佳答案

你可以使用这样的东西:

<?php

namespace App\Exports;

use Auth;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;

class exportSearchResults implements FromCollection, WithHeadings
{
    private $searchResultRows;

    public function collection()
    {
        return $this->searchResultRows;
    }


    public function headings(): array {
         $this->searchResultRows = SearchResult::getByUserList($this->user_list_id)
            ->select( 'source_id' )
            ->groupBy( 'source_id' )
            ->orderBy('source_id', 'asc')
            ->get()
            ->toArray();
            ...
        if ($this->searchResultRows ...){
        return [
            'field',
            'value',
        ];
        } else {
          return ...
        }
    }

}

关于laravel - 使用 Maatwebsite/Laravel-Excel 生成 csv 文件如何使标题返回动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56736933/

相关文章:

php - 尝试使用 Laravel Echo、Vue 和 Pusher 设置事件时出现 419 身份验证错误

php - laravel 5.1 css 和 js 文件无法读取

php - Laravel 5.1 SSH - 无法连接到远程服务器

php - Laravel excel maatwebsite 3.1 导入,excel 单元格中的日期列返回为未知格式数字。如何解决这个问题?

php - Laravel maatwebsite/excel composer 在 mac 中安装错误

php - 如何快速扫描大文本文件中的域名? (拉拉维尔,PHP)

php - 仅从 Carbon 对象获取时间

php - Laravel Excel 垂直居中对齐

php - Laravel Livewire 更新时不会将数据保存在数组中

php - 如何在laravel 5.4 的迁移文件中使用原始mysql 语句?