LoginSignup
0
0

More than 1 year has passed since last update.

LaravelのFormValidationで外部キー制約を持った親テーブルへのアクセス制御がしたい

Posted at

やりたいこと

子テーブルを持つ親テーブルにアクセスさせないようにしたい。

理由

親テーブルを削除するときに、外部キー制約によるエラーをDBに近いところでやりたくない。

仕組み

  1. リクエストされたuser_idがusersテーブルに存在することを確認します。
    1. exists:users,id
  2. postsのuser_idカラムには、リクエストしたuser_idが存在しないことを確認します。
    1. unique:posts,user_id
  3. 結果:usersには存在しているけど、postsには存在しないuser_idの場合のみvalidationを通す。
/**
 * @return array
 */
public function rules()
{
    return [
        'user_id' => 'required|exists:users,id|unique:posts,user_id',
    ];
}

調べてもなかなか出てこなかったので、記事にまとめました。

この仕組を理解すると、他にもいろいろ組み合わせることでできることがあるんじゃないかといった視点を持つことにつながるので勉強になりました。

0
0
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
0