我正在使用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);
}
}
它工作正常,并给我正确的数据。
但是,“用户”表中有一个“密码”列。客户希望我显示“ *****”之类的字符串,而不显示加密的密码。如果未设置密码,则显示“”(空白字符串)。
如何以获取所需输出的方式更改查询功能?
答案 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;
});
}
}