LoginSignup
0
1

More than 3 years have passed since last update.

【laravel】バリデーションのユニークチェックの書き方わかりにくい問題

Last updated at Posted at 2020-06-17

はじめに

タイトルにもある通り、laravelのReqestファイルに記載したバリデーションでユニークバリデーションの記述が異様にわかりづらかったのでメモとして残します。

解読対象

        return [
            'login_id', 'unique:users,login_id,NULL,id,deleted_at,NULL',
        ];

他のバリデーション指示はあんなにシンプルなのにどうしてユニークだけこんなにわかりづらいんだろう、、、理解にすこし時間がかかってしまいました。

内容解説

左から順に
対象カラム名:
unique:ユニーク
users:テーブル名
login_id:チェックするカラム
NULL:除外する値
id:除外する列
deleted_at:追加でユニークチェックを行うカラム
NULL:追加でユニークチェックを行うカラムの条件値
となります。

・除外する値と列二つを組み合わると、今回はidがNULLなレコードはユニークチェックの対象外となります。

・追加でユニークチェックを行うカラムの条件値は該当するレコードに対してユニークチェックを行うので、今回はdeleted_atカラムのレコード内容がNULLのものを対象に追加でユニークチェックを行います。

おわりに

多分わかりづらかった理由は除外と追加が同じように書くので混乱の原因になったと思います。
補足で、今回は除外する値をNULLにしていますが、${id}のような形にしておくとこれから更新するデータは除外してくれます。

また、deleted_atカラムのレコード内容がNULLのものを対象にする事で、ソフトデリートしたレコードをユニークチェックに引っかからないようにできます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1