【发布时间】:2021-12-12 16:54:25
【问题描述】:
我正在尝试在 s3 上的队列中导出大数据,并且不允许序列化“PDO”异常/这是我的代码:
控制器
$transactions = Transaction::query()
->with([
'user',
'user.profile',
'senderUser',
'receiverUser',
'senderUser.roles',
'receiverUser.roles'
])->filterByUser()
->filter($filters)
->orderByDesc('created_at');
if (request()->export_transactions){
(new TransactionsExport(auth('sanctum')->user(),$transactions))->store('transactions-exports/' . now()->format('d:m:Y') . '.csv', 's3', \Maatwebsite\Excel\Excel::CSV);
return response()->json('Export started');
}
导出文件
class TransactionsExport implements FromQuery, WithMapping, WithHeadings, WithCustomQuerySize, ShouldQueue
{
use Exportable;
private $user;
private $transactions;
public function __construct(User $user, $transactions)
{
$this->user = $user;
$this->transactions = $transactions;
}
/**
* @return Builder
*/
public function query()
{
return $this->transactions;
}
public function querySize(): int
{
return $this->transactions->count();
}
public function headings(): array
{
return [
//headings
];
}
public function prepareRows($transactions): array
{
//code here
}
public function map($transaction): array
{
//code here
}
}
我也尝试像这样触发它(使用额外的参数,没有和使用不同的允许方法(存储、下载等))
(new TransactionsExport(auth('sanctum')->user(),$transactions))->queue('transactions-exports/' . now()->format('d:m:Y') . '.csv', 's3', \Maatwebsite\Excel\Excel::CSV);
另外,我尝试将 Transaction::query() 直接移动到导出文件中的查询方法。 也没有帮助 toSql() 方法(出现字符串异常时调用成员函数 count())
不知道我做错了什么。感谢您的帮助。
【问题讨论】:
标签: excel laravel laravel-8 maatwebsite-excel