laravel excel3.0的 “把 collection 作为 Excel 下载”,调用出问题?

业务是将两表查询的结果集合 ,导出到excel,选用了几乎垄断市场的 Laravel Excel,结果文档好简洁,实在找不到适合我业务的api,选了一个最近似的 “把 collection 作为 Excel 下载” ,代码是:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/5/25
 * Time: 11:30
 */

namespace App\Support\excel;


use Illuminate\Database\Query\Builder;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\FromCollection;

class FormExport implements FromCollection
{
    private $aid;

    public function __construct()
    {
//        $this->aid = $aid;

    }


    /**
     * @return Builder
     */
    /*    public function query()
        {
            // TODO: Implement query() method.

            $ids [] = '45';
            $ids [] = '46';
            $ids [] = '47';
            $ids[] = '48';

    //        return CompValues::query()->whereIn('id', $ids);
        }*/

    /**
     * @return Collection
     */
    public function collection()
    {

        return (new Collection([[1, 2, 3], [1, 2, 3]]))->downloadExcel('aa.xlsx', $writerType = 'Xlsx', $headings = false);
        // TODO: Implement collection() method.
    }
}

报错是:


Call to undefined method Symfony\Component\HttpFoundation\BinaryFileResponse::each()

截图:

clipboard.png

求大佬指点迷津,另:拿着2.0代码来回答的就算了。

阅读 5k
2 个回答

版本降级 用2.0

稍微看了一下文档,在 collection 方法不要进行下载或者任何多余的方法。在 collection 方法返回一个 Collection 对象即可。即

public function collection()
{

    return (new Collection([[1, 2, 3], [1, 2, 3]]));
}

然后在控制器调用他的更多方法

public function export(Excel $excel, YourClass $export) 
{
    return $excel->download($export, 'invoices.xlsx');
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题