FormRequestで複数カラムでユニーク制約する/Laravel/Rule

標題の通りです。 FormRequestを利用して、ruleを作る際に複数カラムでユニークにする設定を解説していきます。

例えば、moviesテーブルで、movie_id の中で、actor_idをuniqueにする場合です。(ただし、別のmovie_idには、actor_idが存在していもOK)

■前提

・FormRequestとして、MovieRequest を 作成

・movies テーブルのカラムは下記3つ

'publish_date' 
'movie_id'
'actor_id'

・カラム制約
 → 全て requierd
 → movie_id と actor_id の両カラム合わせて uniqe

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;

class MovieRequest extends FormRequest
{

    public function authorize()
    {
        return true;
    }

    public function rules()
    {

        return [
            'publish_date' => 'required',
            'movie_id' => 'required',
            'actor_id' => 
                ['required',Rule::unique('movies', 'actor_id')->where('movie_id', $this->input('movie_id'))],            
        ];
    }

}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です