概要
Laravelで論理削除(SoftDeletes)を設定している場合、
バリデーションで理論削除したデータも引っかかる。。。
条件を追加(削除したデータを除外)したい!を実現するにあたり
ハマったのでメモとして残しています。
サンプル
Laravel
'email' => 'required|unique:member,email,40,id,deleted_at,NULL',
↓
SQL
SELECT email
FROM member
WHERE id != '40'
AND deleted_at = 'NULL'
※ 必須(required)は無視しています
uniqueのパラメータ内容
パラメータ | 内容 | 必須 | 補足 |
---|---|---|---|
第1 | テーブル | 必須 | |
第2 | カラム | 必須 | |
第3 | 除外データ | 除外したいデータがある場合は、必須 (データを編集の時など) |
デフォルトはIDのデータを記述する。 ※現時点では、理論削除に対応されていない |
第4 | 除外カラム名 (デフォルトはID) |
下記の場合、必須 ・「除外データ(第3)」が「'テーブル(第1)'.’id’」以外 ・追加条件(第5を追加する) |
|
第5 | 追加条件の カラム(1) |
下記のる場合、必須 ・理論削除に対応 ・条件を追加する |
'deleted_at'を追加 または、 条件追加のカラム名 |
第6 | 追加条件の 内容(1) |
'NULL'を追加 または、 条件追加の内容 |
|
第7 | 追加条件の カラム名(2) |
||
第8 | 追加条件の 内容(2) |
バリデーション 5.1 Laravel
https://readouble.com/laravel/5.1/ja/validation.html