Maatwebsite excel 不允许序列化 'PDO'
Maatwebsite excel Serialization of 'PDO' is not allowed
我正在尝试在 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() 出现字符串异常)
不知道我做错了什么。感谢您的帮助。
我已经通过在构造函数中删除 classes 的注入解决了这个问题,它不允许在作业中使用(队列/如果你需要一个 class 的对象,最好调用它喜欢 new Class()
),现在一切正常。
我正在尝试在 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() 出现字符串异常)
不知道我做错了什么。感谢您的帮助。
我已经通过在构造函数中删除 classes 的注入解决了这个问题,它不允许在作业中使用(队列/如果你需要一个 class 的对象,最好调用它喜欢 new Class()
),现在一切正常。