Maatwebsite\Excel\Sheet::mapArraybleRow()的返回值必须是数组类型,返回null

Posted

技术标签:

【中文标题】Maatwebsite\\Excel\\Sheet::mapArraybleRow()的返回值必须是数组类型,返回null【英文标题】:Return value of Maatwebsite\Excel\Sheet::mapArraybleRow() must be of the type array, null returnedMaatwebsite\Excel\Sheet::mapArraybleRow()的返回值必须是数组类型,返回null 【发布时间】:2021-10-06 15:06:53 【问题描述】:

我正在使用 Laravel 5.8 和 php 7.4 来开发我的项目,在这个项目中,我想从一个名为 students 的表中创建一个 Excel 文件。

这就是我所做的:

我在终端输入composer require maatwebsite/excel并下载了包。

我在providers 中添加了\Maatwebsite\Excel\ExcelServiceProvider::class, config/app.php,并将'Excel' => \Maatwebsite\Excel\Facades\Excel::class, 添加为aliases

然后我将这个方法添加到模型Student.php

public static function getCustom()
    
        $records = DB::table('students')->select('mbr_id','mbr_mobile','mbr_post_code','mbr_address','mbr_name','mbr_family','mbr_national_code','mbr_mobile','province','city','degree','grade');
        return $records;
    

然后制作了这个新的导出文件:

php artisan make:export StudentExport --model=App\Member\Student

这个文件包含这个:

use App\Member\Student;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\withHeadings;

class StudentExport implements FromCollection, withHeadings

    public function headings(): array
    
        return [
            'Name',
            'Family Name',
            'National Code',
            'Mobile Number',
            'Province',
            'City',
            'Degree'
            'Grade',
            'Registered at',

        ];
    
    /**
    * @return \Illuminate\Support\Collection
    */
    public function collection()
    
        return collect(Student::getCustom());
    

在 Controller 中,我添加了这些方法:

public function exportIntoExcel()
    
        return Excel::download(new StudentExport, 'studentlist.xlsx');
    

    public function exportIntoCSV()
    
        return Excel::download(new StudentExport, 'studentlist.csv');
    

还有这些通往web.php的路线:

Route::get('export-excel','StudentAdminController@exportIntoExcel');
Route::get('export-csv','StudentAdminController@exportIntoCSV');

但是当我尝试这两条路线时,我得到了这个结果:

Symfony\Component\Debug\Exception\FatalThrowableError (E_RECOVERABLE_ERROR)

Maatwebsite\Excel\Sheet::mapArraybleRow()的返回值必须是数组类型,返回null

那么这里出了什么问题?

【问题讨论】:

嘿!您在成绩栏后添加了空格。请检查 @SNSharma 在哪里? 模态Student.php @SNSharma 不错,但没有解决问题 请注意,我们更喜欢这里的技术写作风格。我们轻轻地劝阻问候,希望你能帮助,谢谢,提前感谢,感谢信,问候,亲切的问候,签名,请你能帮助,聊天材料和缩写 txtspk,恳求,你多久了被卡住、投票建议、元评论等。只需解释您的问题,并展示您尝试过的内容、预期的内容以及实际发生的情况。 【参考方案1】:

更新你的模式

public static function getCustom()

     $records = DB::table('students')->select('mbr_id','mbr_mobile','mbr_post_code','mbr_address','mbr_name','mbr_family','mbr_national_code','mbr_mobile','province','city','degree','grade')->get();
     return $records;

在您的导出文件中

return Student::getCustom();

【讨论】:

你能帮我解决这个问题吗:***.com/questions/68526349/…【参考方案2】:

你需要从getCustom方法返回一个数组或对象

public static function getCustom()

    $records = DB::table('students')->select('mbr_id','mbr_mobile','mbr_post_code','mbr_address','mbr_name','mbr_family','mbr_national_code','mbr_mobile','province','city','degree','grade')->get();
    return $records;

【讨论】:

以上是关于Maatwebsite\Excel\Sheet::mapArraybleRow()的返回值必须是数组类型,返回null的主要内容,如果未能解决你的问题,请参考以下文章