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的主要内容,如果未能解决你的问题,请参考以下文章