<?php
namespace App\Imports;
use App\Models\Customer;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithValidation;
class CustomerImport implements ToCollection, WithHeadingRow, WithValidation
{
public $timestamps = false;
public function collection(Collection $rows)
{
foreach ($rows as $row) {
Customer::create([
'name' => $row['name'],
]);
}
}
public function rules(): array
{
return [
'name' => [
'required',
'max:50',
'unique:customers,name',
],
];
}
}
私のコントローラーコードは次のとおりです。
public function uploadFile(Request $request)
{
$request->validate(
['file' => ['required', 'file', 'mimes:txt,csv']],
['file.required' => 'Please upload the file']
);
try {
Excel::import(new CustomerImport(), $request->file('file'));
} catch (\Maatwebsite\Excel\Validators\ValidationException $e) {
$failures = $e->failures();
return redirect()
->route('customers.upload')
->withErrors($failures);
}
return redirect()
->route('customers.index')
->with('success', __('customers.message_uploaded'));
}
顧客を作成した後、その名前を変更したいと考えています。どうすればいいですか?同じ名前はアップロードできません。それはユニークではないからです。そのため、一意性を試すときは ID を考慮する必要があります。検証中にそれを行う方法が正確にはわかりません。どんな助けでもいただければ幸いです