0
<?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 を考慮する必要があります。検証中にそれを行う方法が正確にはわかりません。どんな助けでもいただければ幸いです

4

1 に答える 1