前提・実現したいこと
laravelデフォルトのユーザーテーブルに以下のUNIQUEカラムを追加しました
php
1// database/migrations/UpdateUsersTable.php 2public function up() 3{ 4 Schema::table('users', function (Blueprint $table) { 5 $table->string('staff_no' , 10); 6 $table->string('staff_code'); 7 $table->unique(['staff_no', 'staff_code']); 8 }); 9}
これのLaravelでのバリデーションについて聞きたいです。
該当のソースコード
UsersController
php
1public function MassStore(MassStoreUserRequest $request) 2{ 3 $inputs = $request->get('users'); 4 5 //mass store process 6 User::massStore($inputs); 7 8 return redirect()->route('admin.users.index'); 9}
Post dataの中身はこんな感じです
php
1'users' => [ 2 [ 3 'name' => 'Ken Tse', 4 'email' => 'ken@gamil.com', 5 'password' => 'ken12ken34ken', 6 'staff_no' => '20191201CT', 7 'staff_code' => 'IT-1azz', 8 ], 9 [ 10 'name' => 'Tom Yeung', 11 'email' => 'tom@gamil.com', 12 'password' => 'tom2222gt', 13 'staff_no' => '20191201CT', //staff_noとstaff_code合わせて重複しました、ここでエラーを出したい。 14 'staff_code' => 'IT-1azz', 15 ], 16]
MassStoreUserRequest
php
1public function rules() 2{ 3 return [ 4 'users' => ['required','array'], 5 'users.*.name' => ['required'], 6 'users.*.email' => ['required','unique:users','email', 'distinct'], 7 'users.*.password' => ['required','string','min:8'], 8 'users.*.staff_no' => ['required','size:10'], 9 'users.*.staff_code' => ['required','string'] 10 // ここで重複値(staff_no、staff_code UNIQUE)を検証する設定方法をご教授お願い致します。 11 ]; 12}
試したこと
MassStoreUserRequest でこんな感じで設定しましたけど、欲しいバリデーション結果じゃあない。
php
1 'users.*.staff_no' => ['required','size:10','unique:users', 'distinct'], 2 'users.*.staff_code' => ['required','string','unique:users', 'distinct'] 3
補足情報(FW/ツールのバージョンなど)
Laravel 5.7
CentOS 7
PHP 7.2
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/26 08:34