Laravel Excel 验证导入

Dre*_*nos 2 validation import excel laravel

我正在使用 Maatwebsite/excel 组件导入 excel 文件。在本例中,导入用户。我需要验证邮件不存在,然后导入唯一数据

\n\n

我在导入文件中有此代码\n\n\n

namespace App\\Imports;\n\nuse App\\User;\nuse Illuminate\\Support\\Facades\\Hash;\nuse Maatwebsite\\Excel\\Concerns\\ToModel;\n\nuse Maatwebsite\\Excel\\Concerns\\Importable;\nuse Maatwebsite\\Excel\\Concerns\\WithValidation;\n\nclass UsersImport implements ToModel, WithValidation\n{\n    use Importable;\n    /**\n    * @param array $row\n    *\n    * @return \\Illuminate\\Database\\Eloquent\\Model|null\n    */\n    public function model(array $row)\n    {\n        $user = User::create([\n            'name'     => $row[0],\n            'email'    => $row[1], \n            'password' => Hash::make($row[2]),\n        ]);\n\n        $user->assignRole('guest');\n    }\n\n    public function rules(): array\n    {\n        return [\n            '0' => 'required|string',\n            '1' => 'unique:users',\n        ];\n    }\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的控制器中的这段代码:

\n\n
public function import() \n{\n    Excel::import(new UsersImport, request()->file('file'));\n\n    return back()->with('success', 'Importado con \xc3\xa9xito!');\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我想导入重复数据时,出现以下错误

\n\n

SQLSTATE[42S22]:未找到列:1054“where 子句”中的未知列“1.1”(SQL:选择 count(*) 作为来自userswhere的聚合11= admin@adsmdfin.com)

\n

Rob*_*ard 5

验证器的存在规则将使用数组的键(在您的例子中为 1)作为在用户表中搜索的列。

您可以像这样指定列,它应该可以工作。

'1' => 'unique:users,email',
Run Code Online (Sandbox Code Playgroud)

来自: https: //laravel.com/docs/5.8/validation#rule-exists