Laravel Maatwebsite excel array - PullRequest
       0

Laravel Maatwebsite excel array

0 голосов
/ 22 сентября 2018

Я новичок в Laravel, я использую библиотеку laravel Maatwebsite 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'
            ]
        ]);

Я не могу использовать цикл внутри возвратасобирать.Есть ли решение?пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 22 сентября 2018

Вы можете напрямую отфильтровать нужные вам значения из вашей модели Eloquent, используя список атрибутов в качестве параметра для метода get.

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

return collect($data->toArray());
0 голосов
/ 26 июня 2019

Вы можете использовать концерн Maatwebsite\Excel\Concerns\FromArray, который работает так же, как 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',
        ];
    }
}

Источник

0 голосов
/ 22 сентября 2018

Вы можете использовать each или map или любой другой цепной метод, который вы хотите Коллекции 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
         }); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...