鍍金池/ 問答/Java  PHP  Linux  數(shù)據(jù)庫/ laravel excel3.0的 “把 collection 作為 Excel

laravel excel3.0的 “把 collection 作為 Excel 下載”,調(diào)用出問題?

業(yè)務(wù)是將兩表查詢的結(jié)果集合 ,導(dǎo)出到excel,選用了幾乎壟斷市場的 Laravel Excel,結(jié)果文檔好簡潔,實(shí)在找不到適合我業(yè)務(wù)的api,選了一個(gè)最近似的 “把 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.
    }
}

報(bào)錯(cuò)是:


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

截圖:

clipboard.png

求大佬指點(diǎn)迷津,另:拿著2.0代碼來回答的就算了。

回答
編輯回答
念舊

版本降級 用2.0

2018年8月23日 16:30
編輯回答
久礙你

稍微看了一下文檔,在 collection 方法不要進(jìn)行下載或者任何多余的方法。在 collection 方法返回一個(gè) Collection 對象即可。即

public function collection()
{

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

然后在控制器調(diào)用他的更多方法

public function export(Excel $excel, YourClass $export) 
{
    return $excel->download($export, 'invoices.xlsx');
}
2018年4月25日 21:49