我正在使用laravel-excel包,并希望将excel导入到数组中,它对于主代码运行良好(没有验证),但当我尝试添加验证/规则时,验证无法正常工作(我的意思是,就像验证被跳过一样,因此如果我上传了不符合格式的文件,数组输出仍然会出现),以下是我的导入代码
<?php
namespace App\Imports;
use App\Models\Request;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithValidation;
use Illuminate\Validation\Rule;
class RequestImport implements ToModel, WithValidation, WithHeadingRow
{
use Importable;
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
return new Request([
'no' => $row[0],
'username' => $row[1],
'name' => $row[2],
]);
}
// create validation by heading row
public function rules(): array
{
return [
'no' => 'required',
'username' => 'required',
'name' => 'required',
];
}
}
这是我调用RequestImport类时的控制器代码
$file = request()->file('fileExcel');
// save file
if (isset($request->upload)) {
$this->saveFile($file);
}
// return excel import into array
$data = (new RequestImport)->toArray($file); //here I call the RequestImport
return response()->json([
'status' => 'success',
'message' => 'success,
'data' => $data[0],
]);
我的代码有问题吗?或者我错过了什么?
1条答案
按热度按时间eyh26e7m1#
这不是正式,但我找到了一个变通方法。首先,我添加了可导入的关注点,然后定义了一个类属性$data。这将在满足所有验证后存储行。
在我的控制器中