【问题标题】:Import Excel Laravel导入 Excel Laravel
【发布时间】:2021-09-23 03:49:43
【问题描述】:

我在使用 excel laravel 包导入数据时遇到问题。 例如:在我的导入文件中有 5 个项目,使用验证后出现 3 个项目错误我想跳过那里的项目并继续导入 2 个项目。目前,如果文件中有任何错误,它将停止导入过程。 这个问题有什么解决办法吗?

【问题讨论】:

    标签: laravel laravel-excel


    【解决方案1】:

    有时您可能想跳过所有错误,例如重复的数据库记录。通过使用SkipsOnError 关注点,您可以控制模型导入失败时发生的情况。使用SkipsOnError时,发生数据库异常时,整个导入不会是rollbacked

       <?php
        
        namespace App\Imports;
        
        use App\User;
        use Maatwebsite\Excel\Concerns\ToModel;
        use Maatwebsite\Excel\Concerns\Importable;
        use Maatwebsite\Excel\Concerns\SkipsOnError;
        use Maatwebsite\Excel\Concerns\WithValidation;
        
        class UsersImport implements ToModel, WithValidation, SkipsOnError
        {
            use Importable;
        
            /**
             * @param \Throwable $e
             */
            public function onError(\Throwable $e)
            {
                // Handle the exception how you'd like.
            }
        }
    

    如果你想自动跳过所有异常并在导入结束时收集它们,你可以使用Maatwebsite\Excel\Concerns\SkipsErrors trait

        <?php
    
    namespace App\Imports;
    
    use App\User;
    use Maatwebsite\Excel\Concerns\ToModel;
    use Maatwebsite\Excel\Validators\Failure;
    use Maatwebsite\Excel\Concerns\Importable;
    use Maatwebsite\Excel\Concerns\SkipsOnError;
    use Maatwebsite\Excel\Concerns\WithValidation;
    use Maatwebsite\Excel\Concerns\SkipsErrors;
    
    class UsersImport implements ToModel, WithValidation, SkipsOnError
    {
        use Importable, SkipsErrors;
    }
    

    更多信息请阅读This

    【讨论】:

      猜你喜欢
      • 2019-03-10
      • 2018-05-20
      • 2019-12-29
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      相关资源
      最近更新 更多