【发布时间】:2021-09-23 03:49:43
【问题描述】:
我在使用 excel laravel 包导入数据时遇到问题。 例如:在我的导入文件中有 5 个项目,使用验证后出现 3 个项目错误我想跳过那里的项目并继续导入 2 个项目。目前,如果文件中有任何错误,它将停止导入过程。 这个问题有什么解决办法吗?
【问题讨论】:
标签: laravel laravel-excel
我在使用 excel laravel 包导入数据时遇到问题。 例如:在我的导入文件中有 5 个项目,使用验证后出现 3 个项目错误我想跳过那里的项目并继续导入 2 个项目。目前,如果文件中有任何错误,它将停止导入过程。 这个问题有什么解决办法吗?
【问题讨论】:
标签: laravel laravel-excel
有时您可能想跳过所有错误,例如重复的数据库记录。通过使用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
【讨论】: