Mysql Larvel:try-catch中的DB::transaction()不工作
我正在控制器中使用手动数据库事务Mysql Larvel:try-catch中的DB::transaction()不工作,mysql,laravel,transactions,Mysql,Laravel,Transactions,我正在控制器中使用手动数据库事务 public function exportUsers(){ DB::beginTransaction(); try{ $data = new \App\Models\User(); $excelData = $data->getMemberData(); $reportGeneratedOn = date('dMY'); $report_file_name = 'All_Members_'.$reportGene
public function exportUsers(){
DB::beginTransaction();
try{
$data = new \App\Models\User();
$excelData = $data->getMemberData();
$reportGeneratedOn = date('dMY');
$report_file_name = 'All_Members_'.$reportGeneratedOn.'.xls';
DB::table('settings')->where('id',1)->update(['user_export_status_id'=>2]);
$excelHTML = view('administrator.member.excel',compact('excelData'))->render();
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Html();
$spreadsheet = $reader->loadFromString($excelHTML);
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');
$fileName = md5('allmembers_'. microtime()).".xls";
$path = storage_path('app/temp/');
$writer->save( $path . $fileName );
$excel_file_content = file_get_contents( $path . $fileName );
$data = $this->S3Upload($fileName , env('S3_MEMBERS_EXPORT_PATH'), env('S3_MEMBERS_EXPORT_URL'), $excel_file_content,$report_file_name );
if ( $data['status'] ){
DB::table('settings')->where('id',1)->update(['user_export_status_id'=>3]);
DB::table('settings')->where('id',1)->update(['user_export_path'=>$data['preSignedUrl']]);
if( is_file($path . $fileName) ) {
@unlink( $path . $fileName );
}
}
DB::commit();
return response()->json(['error' => 0, 'code' => 200, 'message' => 'Please download the generated excel.','status'=>3, 'report_url' => $data['preSignedUrl']], 200);
}
catch(\Exception $e){
DB::rollBack();
return response()->json(['error' => 1, 'code' => 200, 'message' => 'An error occured while generating the report.'.$e->getMessage().' : '.$e->getFile().'-'.$e->getLine()], 200);
}
}
但是用这个我得到了一个如下的错误
错误:生成报告时出错。DOMDocument::loadHTML():HTMLParserEntityRef:实体中没有名称,第2855行:
C:\wamp64\www\O2X\Trunk\Web\vendor\phpoffice\phpspreadsheet\src\phpspreadsheet\Reader\Html.php-619
我的数据库有一个user\u export\u status\u id字段,该字段最初的值为1。当导出开始时,它会更新为2。但在我出错后,它并没有回滚到1。Dataabse的值仍然为2。您应该使用laravelWhy MaatWebsite来尝试此操作?我们不能为Laravel中的任何其他excel库执行Db事务。@Opps maatwebsite有很好的功能和干净的代码,这就是为什么