Entersquare Inc. ホームページ作成の株式会社エンタースクウェア

【Laravel 8】2つのカラムでユニーク制約をする(Validate)

【Laravel 8】2つのカラムでユニーク制約をする(Validate)

Laravel8のバリデーションで、2つのカラムをユニークで制約する方法です。

例えば、

link1カラム、link2カラムがあったととします。

link1だけユニーク、link2だけがユニークではなく、link1とlink2の値がセットでユニークであって欲しい場合があります。

環境

Laravel 8

実際のコード

早速、実際のコードです。詳細は次に記載します。

 $this->validates['link2'] = [
    'nullable',
    'regex:/^[a-z0-9_]+$/',
    'between:1,50',
    Rule::unique('テーブル名')
        ->where('link1', 値)
        ->where('link2', 値)
        ->ignore(自分のID, 'IDカラム名')
];

いつも通り、バリデーションのルールを入れます「nullable」や「between」などなど。これは不要であればなしでもOKです。

Ruleクラスを使ってルールを追加する

次に「Rule」クラスを使ってルールを新しく追加します。

unique()にユニークにしたいテーブル名を入れ、where()で2つのカラムを指定します。

「値」にはフォームで受け取った値を入れます。

最後に自分自身は省きたいのでiqnore()で自分のIDを指定してあげます。

Solutions

ソリューション

ホームページ作成

Webサイト制作・運用保守

コーポレートサイト/サービスサイト/オウンドメディアサイト/LP/EC

ウェブマーケティングの技術を使ってホームページの作成や保守を承っております。

Webのお悩み

Webのご相談・サポート

運用のお困りごと/集客のお困りごと/運用担当が居なくなったなど

Webに関するお困りごとや、お悩みなどのご相談、サポートを承っております。

その他、アクセス解析、広告運用、SNSサポートなどWebに関する事全般承っております。

詳しく見る