Laravel テーブル別にUnique制約

laravelのトップ画像

今回、ユーザー側と利用者側で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に出来ました。

laravelのトップ画像

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次