今回、ユーザー側と利用者側でmaltiAuthの実装中、ユーザー側と利用者側でテーブル別にemailカラムにUnique制約をつけたかったが手間取ったので、メモ。
usersテーブルのvalidate [ app/Http/Controller/Auth/RegisterController ]
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'company_name' => ['required', 'string', 'max:255'],
'phone_number' => ['required', 'string', 'max:11'],
'adress' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
Contractorsテーブルのvalidate [ app/Http/Controller/Contracter/Auth/RegisterController ]
注)Controller以下のContracterは新たに作ったフォルダです。
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'company_name' => ['required', 'string', 'max:255'],
'phone_number' => ['required', 'string', 'max:11'],
'adress' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:contractors'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
どちらもemailカラムにのみ、uniqueを指定してますが、unique:ここにテーブル名とする事で、DB全体ではなく、テーブル単位でUniqueに出来ました。