Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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
Maatwebsite\Excel\Validators\ValidationException:给定数据在Laravel中无效_Laravel_Maatwebsite Excel - Fatal编程技术网

Maatwebsite\Excel\Validators\ValidationException:给定数据在Laravel中无效

Maatwebsite\Excel\Validators\ValidationException:给定数据在Laravel中无效,laravel,maatwebsite-excel,Laravel,Maatwebsite Excel,在我的Laravel-5.8项目中,我使用Maatwebsites-3.1导入excel 进口 <?php namespace App\Imports; use Maatwebsite\Excel\Concerns\WithMultipleSheets; class LeavesImport implements WithMultipleSheets { public function sheets(): array { return [

在我的Laravel-5.8项目中,我使用Maatwebsites-3.1导入excel

进口

<?php
namespace App\Imports;
use Maatwebsite\Excel\Concerns\WithMultipleSheets;

class LeavesImport implements WithMultipleSheets
{
    public function sheets(): array
    {
        return [
            new FirstLeaveSheetImport()
        ];
    }
}
控制器

public function import(Request $request){
    $request->validate([
        'file' => 'required|max:10000|mimes:xlsx,xls',
    ]);

  $path1 = $request->file('file')->store('temp'); 
  $path=storage_path('app').'/'.$path1;  

    try{

        Excel::import(new LeavesImport, $path);      
        
    } catch (\Maatwebsite\Excel\Validators\ValidationException $e) {
        $failures = $e->failures();
        Log::error($e);
        $errormessage = "";            

     // dd($failures);
     foreach ($failures as $failure) {
         $errormess = "";
         foreach($failure->errors() as $error)
         {
             $errormess = $errormess.$error;
         }
         $errormessage = $errormessage." ,\n At Row ".$failure->row().", ".$errormess."<br>";
     }
         // Session::flash('error', 'Excel file is not imported!');
         Session::flash('error', $errormessage);
         // return redirect()->route('leave.leave_adjustments.index');  
         return back();            
    }catch (\Illuminate\Database\QueryException $e)
    {
        $errorCode = $e->errorInfo[1];
        if($errorCode == 1062){
        Log::error($e);
        DB::rollback();
        Session::flash('error', 'You have a duplicate entry problem!');
        }
        return back();

    }
    
    Session::flash('success', 'Leave Records Imported Successfully');
    return redirect()->route('leave.leave_reviews.index_hr');         
}
如何检测和纠正错误

感谢来自

试试看{
$import->import('import-users.xlsx');
}捕获(\Maatwebsite\Excel\Validators\ValidationException$e){
$failures=$e->failures();
foreach($failures作为$failure){
$failure->row();//出错的行
$failure->attribute();//标题键(如果使用标题行关注点)或列索引
$failure->errors();//来自Laravel验证程序的实际错误消息
$failure->values();//失败行的值。
}
}
来自

试试看{
$import->import('import-users.xlsx');
}捕获(\Maatwebsite\Excel\Validators\ValidationException$e){
$failures=$e->failures();
foreach($failures作为$failure){
$failure->row();//出错的行
$failure->attribute();//标题键(如果使用标题行关注点)或列索引
$failure->errors();//来自Laravel验证程序的实际错误消息
$failure->values();//失败行的值。
}
}

如果有提示,请尝试查看
$e->errors()
以及
$e->failiures()
there@apokryfos-它没有显示任何错误。我通过Log::error($e)得到的所有信息;错误日志中显示的是我在上面的错误日志中显示的内容。如果有提示,请尝试查看
$e->errors()
以及
$e->failiures()
there@apokryfos-它没有显示任何错误。我通过Log::error($e)得到的所有信息;错误日志中显示的是我在上面的错误日志中显示的内容。
public function import(Request $request){
    $request->validate([
        'file' => 'required|max:10000|mimes:xlsx,xls',
    ]);

  $path1 = $request->file('file')->store('temp'); 
  $path=storage_path('app').'/'.$path1;  

    try{

        Excel::import(new LeavesImport, $path);      
        
    } catch (\Maatwebsite\Excel\Validators\ValidationException $e) {
        $failures = $e->failures();
        Log::error($e);
        $errormessage = "";            

     // dd($failures);
     foreach ($failures as $failure) {
         $errormess = "";
         foreach($failure->errors() as $error)
         {
             $errormess = $errormess.$error;
         }
         $errormessage = $errormessage." ,\n At Row ".$failure->row().", ".$errormess."<br>";
     }
         // Session::flash('error', 'Excel file is not imported!');
         Session::flash('error', $errormessage);
         // return redirect()->route('leave.leave_adjustments.index');  
         return back();            
    }catch (\Illuminate\Database\QueryException $e)
    {
        $errorCode = $e->errorInfo[1];
        if($errorCode == 1062){
        Log::error($e);
        DB::rollback();
        Session::flash('error', 'You have a duplicate entry problem!');
        }
        return back();

    }
    
    Session::flash('success', 'Leave Records Imported Successfully');
    return redirect()->route('leave.leave_reviews.index_hr');         
}
[2020-11-16 07:38:53] production.ERROR: Maatwebsite\Excel\Validators\ValidationException: The given data was invalid. in C:\xampp\htdocs\myapp\vendor\maatwebsite\excel\src\Validators\RowValidator.php:62
Stack trace:
#0 C:\xampp\htdocs\myapp\vendor\maatwebsite\excel\src\Imports\ModelManager.php(166): Maatwebsite\Excel\Validators\RowValidator->validate(Array, Object(App\Imports\FirstLeaveSheetImport))
#1 C:\xampp\htdocs\myapp\vendor\maatwebsite\excel\src\Imports\ModelManager.php(53): Maatwebsite\Excel\Imports\ModelManager->validateRows(Object(App\Imports\FirstLeaveSheetImport))
#2 C:\xampp\htdocs\myapp\vendor\maatwebsite\excel\src\Imports\ModelImporter.php(70): Maatwebsite\Excel\Imports\ModelManager->flush(Object(App\Imports\FirstLeaveSheetImport), true)
#3 C:\xampp\htdocs\myapp\vendor\maatwebsite\excel\src\Sheet.php(248): Maatwebsite\Excel\Imports\ModelImporter->import(Object(PhpOffice\PhpSpreadsheet\Worksheet\Worksheet), Object(App\Imports\FirstLeaveSheetImport), 2)
#4 C:\xampp\htdocs\myapp\vendor\maatwebsite\excel\src\Reader.php(111): Maatwebsite\Excel\Sheet->import(Object(App\Imports\FirstLeaveSheetImport), 2)
#5 C:\xampp\htdocs\myapp\vendor\laravel\framework\src\Illuminate\Database\Concerns\ManagesTransactions.php(29): Maatwebsite\Excel\Reader->Maatwebsite\Excel\{closure}(Object(Illuminate\Database\MySqlConnection))
#6 C:\xampp\htdocs\myapp\vendor\maatwebsite\excel\src\Transactions\DbTransactionHandler.php(30): Illuminate\Database\Connection->transaction(Object(Closure))
#7 C:\xampp\htdocs\myapp\vendor\maatwebsite\excel\src\Reader.php(115): Maatwebsite\Excel\Transactions\DbTransactionHandler->__invoke(Object(Closure))
#8 C:\xampp\htdocs\myapp\vendor\maatwebsite\excel\src\Excel.php(146): Maatwebsite\Excel\Reader->read(Object(App\Imports\LeavesImport), 'C:\\xampp\\htdocs...', 'Xlsx', NULL)
#9 C:\xampp\htdocs\myapp\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php(239): Maatwebsite\Excel\Excel->import(Object(App\Imports\LeavesImport), 'C:\\xampp\\htdocs...')
#10 C:\xampp\htdocs\myapp\app\Http\Controllers\Leave\LeaveAdjustmentsController.php(360): Illuminate\Support\Facades\Facade::__callStatic('import', Array)
#11 [internal function]: App\Http\Controllers\Leave\LeaveAdjustmentsController->import(Object(Illuminate\Http\Request))