Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Larvel:try-catch中的DB::transaction()不工作_Mysql_Laravel_Transactions - Fatal编程技术网

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有很好的功能和干净的代码,这就是为什么