使用laravel-excel导出时如何显示列的特殊字符串?

时间:2019-08-06 03:28:13

标签: laravel maatwebsite-excel

我正在使用laravel excel从“用户”表中导出数据。需要运行查询,并且所有与查询匹配的记录都将返回。

我的代码就像

class UsersExport implements FromQuery
{
    use Exportable;

    public function __construct(string $code)
    {
        $this->code = $code;
    }

    public function query()
    {
        return Tantousya::query()->where('code','>=',$this->code); 
    }
}

它工作正常,并给我正确的数据。

但是,“用户”表中有一个“密码”列。客户希望我显示“ *****”之类的字符串,而不显示加密的密码。如果未设置密码,则显示“”(空白字符串)。

为了更好地说明这一点,我当前的输出是 enter image description here

我想要的输出是, enter image description here

如何以获取所需输出的方式更改查询功能?

1 个答案:

答案 0 :(得分:2)

我认为您应该尝试这样的事情:

public function query()
{
    return Tantousya::query()->select(['*', \DB::raw("'***' as password")])->where('code','>=',$this->code); 
}

第二种方法是实现FromCollection,然后使用map方法更改值。

类似这样的东西:

use Maatwebsite\Excel\Concerns\FromCollection;

class UserExport implements FromCollection {

    public function collection()
    {
        return User::select(['*'])
            ->get()
            ->map(function($item) {
                $collection = $item;
                $collection['password'] = '***';
                return $collection;
            });
    }
}