mercredi 11 décembre 2019

Verify duplicate values (multi column unique) on the array in Laravel5.7

relate as below issue

Verify duplicate values on the array in Laravel5.7

I am add two fields to data base.

// database/migrations/UpdateUsersTable.php
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->string('staff_no' , 10);
        $table->string('staff_code');
        $table->unique(['staff_no', 'staff_code']);
    });
}

I want to verify if multi column unique in my database or post array value is duplicate or not? Here is my codes :

this is my Controller

UsersController

public function MassStore(MassStoreUserRequest $request)
{
    $inputs = $request->get('users');

    //mass store process
    User::massStore($inputs);

    return redirect()->route('admin.users.index');
}

and this is my POST data (post data($inputs) will send like as below) :

'users' => [
    [
        'name'       => 'Ken Tse',
        'email'      => 'ken@gamil.com',
        'password'   => 'ken12ken34ken',
        'staff_no'   => '20191201CT',
        'staff_code' => 'IT-1azz',
    ],
    [
        'name'       => 'Tom Yeung',
        'email'      => 'tom@gamil.com',   
        'password'   => 'tom2222gt',
        'staff_no'   => '20191201CT', // staff_no + staff_code is duplicate, so need trigger error
        'staff_code' => 'IT-1azz',
    ],
]

MassStoreUserRequest

public function rules()
{
    return [
        'users'                => ['required','array'],
        'users.*.name'         => ['required'],
        'users.*.email'        => ['required','unique:users','email', 'distinct'],
        'users.*.password'     => ['required','string','min:8'],
        'users.*.staff_no'     => ['required','size:10'],
        'users.*.staff_code'   => ['required','string']
        // how to set verify duplicate values(staff_no,staff_code unique) in here?
    ];
}


via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire