0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

株式会社シンプルウェイAdvent Calendar 2024

Day 14

laravelのバリデーションが便利

Last updated at Posted at 2024-12-09

はじめに

laravelには、さまざまなバリデーションが用意されており、その中で入力された値が指定したテーブルに存在するかチェックするexistsが便利でしたので紹介します。

基本

'id' => ['exists:table']

tableテーブルのidカラムに入力されたid値が存在すること。

チェックするカラムを指定

'id' => ['exists:table,foreign_id']

tableテーブルのforeign_idカラムに入力されたid値が存在すること。

チェックするレコードを限定。

'id' => ['exists:table,foreign_id,deleted_flag,0']

tableテーブルのdeleted_flag0であるレコードセットに対して、foreign_idカラムに入力されたid値が存在すること。
対象レコードの条件は複数指定可能。

注意点

便利ですが、注意点もあります。
例えば、idが数値で10桁であることをバリデーションするため

'id' => ['exists:table', 'digits:10']

と書くと、exists(DBアクセス)が先に行われてしまうため、
場合によってはセキュリティ上の問題が発生する可能性があります。
ですので、下記の様にルールの順番を変更する必要があります。

'id' => ['digits:10', 'exists:table']

まとめ

こういった、フレームワークの便利機能を積極的に利用して効率を上げたいところですが、
安易に利用せず、問題点がないか詳細な調査も必要だと感じました。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?