Laravel Maatwebsite Excel 数组

3

我是 Laravel 的新手,但我正在使用 Laravel 的 Maatwebsite\Excel 库 v3 来导出 Excel。但我在导出数组数据时遇到了一些问题。

以下是我的代码:

    <?php

namespace App\Exports;
use App\Team;

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

class RegisteredMemberExport implements FromCollection, WithHeadings
{
    use Exportable;

    public function collection()
    {

     $data = Team::where('reg', 1)->get();       

        return collect([
            [
                'name' => $data->name,
                'email' => $data->email
            ]
        ]);
    }

    public function headings(): array
    {
        return [
            'name',
            'email'
        ];
    }

}

收集应该是:
return collect
([
            [
                'name' => 'Povilas',
                'email' => 'povilas@laraveldaily.com'
            ],
            [
                'name' => 'Taylor',
                'email' => 'taylor@laravel.com'
            ]
        ]);

我无法在collect方法返回中使用循环。请问能提供一些帮助吗?


你想从集合中获取什么数据? - Shailendra Gupta
你想用循环做什么? - Elisha Senoo
3个回答

2

使用属性列表作为get方法的参数,您可以直接从Eloquent模型中过滤所需的值。

$data = Team::where('reg', 1)->get(['name', 'email']);

return collect($data->toArray());

0

您可以使用eachmap或任何您想要的链式方法Laravel集合,如下所示:

return collect([
                 ['name' => 'Povilas','email'=>'povilas@laraveldaily.com'],
                 ['name' => 'Taylor','email' => 'taylor@laravel.com']
              ])->each(function($value){
                 return $value; // Do what you want here
         }); 

0
您可以使用Maatwebsite\Excel\Concerns\FromArray concern,其与FromCollection相同。
<?php

namespace App\Exports;

use Maatwebsite\Excel\Concerns\FromArray;
use Maatwebsite\Excel\Concerns\WithHeadings;

class RegisteredMemberExport implements FromArray, WithHeadings
{
    public function array(): array
    {
        return [
            [
                'name' => 'Povilas',
                'email' => 'povilas@laraveldaily.com',
            ],
            [
                'name' => 'Taylor',
                'email' => 'taylor@laravel.com',
            ],
        ];
    }

    public function headings(): array
    {
        return [
            'name',
            'email',
        ];
    }
}

源代码


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接