如何解决不允许序列化“Doctrine\DBAL\Driver\PDOConnection”
我正在做一个项目 我做了一个可导出的类 这是课程
- 我正在向“Illuminate\Database\Eloquent\Builder”的导出类型发送查询
<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\WithMapping;
use Illuminate\Contracts\Queue\ShouldQueue;
use Maatwebsite\Excel\Concerns\WithHeadings;
class ExcelExport implements FromQuery,WithMapping,WithHeadings
{
use Exportable;
private $query;
public function __construct($query)
{
$this->query = $query;
}
public function query()
{
return $this->query;
}
public function headings():array
{
$return = [
'H1','H2',];
return $return;
}
public function map($row):array
{
$return = [];
foreach ($row->relation as $rel) {
$return[] = $rel->column;
}
return $return;
}
}
并将其调用到我的控制器中
public function export(Request $request,string $type = 'excel')
{
// returns Builder
$query = $this->service->findByReportable($request,1);
$file = new ExcelExportLead($query);
if ($file){
switch (strtolower($type)) {
case 'pdf':
$file_name = 'export-' . time() . '.pdf';
// OriginExcel refers to 'Maatwebsite\Excel\Excel'
return $file::queue($file,$file_name,OriginExcel::DOMPDF);
break;
default:
$file_name = 'export-' . time() . '.xls';
return $file->queue($file_name);
break;
}
} else{
return back()->withErrors(__('common.Sorry But there Was an issue in exporting Data please try again'));
}
但是出现的错误是'不允许'Doctrine\DBAL\Driver\PDOConnection'的序列化'
我不知道如何解决我用过 SerializesModels
但它没有解决问题
解决方法
序列化是一种工具,您可以将变量/对象编码为文本(或二进制)表示,然后将该变量移动到另一个线程/进程。
潜在的问题是 Builder 对象具有 PDOConnection 属性(与数据库的连接),并且这些对象根据定义无法序列化,因为它们通常是操作系统中无法移动的文件描述符到另一个进程/线程。
解决方案应该遵循其中之一
- 使用 builder->toSql() 方法将查询作为字符串发送到 ExcelExport
- 以其他方式编码查询(IE anourvalar/eloquent-serialize https://packagist.org/packages/anourvalar/eloquent-serialize)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。