laravel - 使用 laravel-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);
}
}
它运行良好,并为我提供了正确的数据。
但是,在用户表中有一个“密码”列。客户希望我显示像“*****”这样的字符串,而不是显示加密的密码。如果未设置密码,则显示“”(空白字符串)。
如何更改查询功能以获得所需的输出?
解决方案
我认为你应该尝试这样的事情:
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;
});
}
}
推荐阅读
- javascript - 通过更改提交按钮文本更新表单状态
- eclipse - 是否有使用 Eclipse 用 CSV 文件填充数据库的功能或工具?
- azure-devops - Azure DevOps 按文件类型设置源代码控制签入权限
- c - 有什么方法可以取消引用 C 中的内存地址吗?
- ubuntu - Buildozer 在 W10 上的 Lubuntu VM 上出现错误
- java - 如何让 ScheduleTask 在某个时间执行一次任务?
- android - Api 刷新和内存不足错误
- qt - PyQt5 Qthread 创建
- reactjs - React 中的父子关系
- sdk - 在 azure bot 框架 SDK V4 中将 Bot 移交给人类