导语
今天使用Laravel-excel导出数据时,发现少一列数据,看了数据库,发现该列数据全为0(int类型),所以不显示,找到原因了,那好办了,尝试转一下类型。开干。
首先需要引入数据映射
类的接口添加一个WithMapping
use Maatwebsite\Excel\Concerns\WithMapping;
class UsersExport implements WithMapping{ }
然后添加映射方法
# 必须引入
use PhpOffice\PhpSpreadsheet\Shared\StringHelper;
//映射数据
public function map($user): array
{
return [
$user->id,
$user->username,
//解决0不显示
StringHelper::formatNumber($user->status),
];
}
至此,可以正常导出0了,只是把他的数据类型转换成了string.
附:完整源码如下。
<?php
namespace App\Exports;
use App\Models\User;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithMapping;
use PhpOffice\PhpSpreadsheet\Shared\StringHelper;//string格式转换助手类
class UsersExport implements FromQuery, WithMapping
{
//映射数据
public function map($user): array
{
return [
$user->id,
$user->username,
//解决0不显示
StringHelper::formatNumber($user->status),
];
}
/**
* 数据query
*/
public function query()
{
return User::query();
}
}
评论区