Laravelのデータの有無についてのバリデーションまとめ

laravelのバリデーションをまとめていきます。
基本的な使い方はドキュメントを参照してもらうとして、もう少し細かい部分まで確認してみたいと思います。
今回は、必須などのデータの有無についてのバリデーションを確認します。

laravel/frameworkのバージョンはv9.45.1です。
参考までに、バリデーションの実装部分のソースのリンクもつけておきます。
実装部分の前に行われる処理もありますので、注意してください。

required | 必須

必須のチェックを行います。リクエストにパラメーターが含まれていない場合は、エラーとなります。
文字列に対してはtrimを行いますので、半角スペースのみの場合もエラーとなります。

PHP
$rules = ['parameter' => 'required'];

// リクエストにパラメーターが含まれていない
$data = [];
Validator::make($data, $rules)->passes(); // false

// 値がnull
$data = ['parameter' => null];
Validator::make($data, $rules)->passes(); // false

// 値が空文字
$data = ['parameter' => ''];
Validator::make($data, $rules)->passes(); // false

// 値が半角スペース
$data = ['parameter' => ' '];
Validator::make($data, $rules)->passes(); // false

// 値が空配列
$data = ['parameter' => []];
Validator::make($data, $rules)->passes(); // false

$data = ['parameter' => 'a'];
Validator::make($data, $rules)->passes(); // true

$data = ['parameter' => ['a', 'b']];
Validator::make($data, $rules)->passes(); // true

Laravelでの実装はこちら。

filled | 値があること

基本的には必須(required)と同じ条件となりますが、リクエストにパラメーターが含まれていない場合はエラーとなりません。

PHP
$rules = ['parameter' => 'filled'];

// リクエストにパラメーターが含まれていない
$data = [];
Validator::make($data, $rules)->passes(); // true

// 値がnull
$data = ['parameter' => null];
Validator::make($data, $rules)->passes(); // false

// 値が空文字
$data = ['parameter' => ''];
Validator::make($data, $rules)->passes(); // false

// 値が半角スペース
$data = ['parameter' => ' '];
Validator::make($data, $rules)->passes(); // false

// 値が空配列
$data = ['parameter' => []];
Validator::make($data, $rules)->passes(); // false

$data = ['parameter' => 'a'];
Validator::make($data, $rules)->passes(); // true

$data = ['parameter' => ['a', 'b']];
Validator::make($data, $rules)->passes(); // true

Laravelでの実装はこちら。

present | 存在すること

リクエストにパラメーターが含まれることをチェックします。
値についてのチェックは行われません。

PHP
$rules = ['parameter' => 'present'];

// リクエストにパラメーターが含まれていない
$data = [];
Validator::make($data, $rules)->passes(); // false

// 値がnull
$data = ['parameter' => null];
Validator::make($data, $rules)->passes(); // true

// 値が空文字
$data = ['parameter' => ''];
Validator::make($data, $rules)->passes(); // true

// 値が半角スペース
$data = ['parameter' => ' '];
Validator::make($data, $rules)->passes(); // true

// 値が空配列
$data = ['parameter' => []];
Validator::make($data, $rules)->passes(); // true

$data = ['parameter' => 'a'];
Validator::make($data, $rules)->passes(); // true

$data = ['parameter' => ['a', 'b']];
Validator::make($data, $rules)->passes(); // true

Laravelでの実装はこちら。

prohibited | 禁止

リクエストがないこと(リクエストに含まれないもしくは空文字)であることをチェックします。
nullと、空配列の場合は注意が必要です。

PHP
$rules = ['parameter' => 'prohibited'];

// リクエストにパラメーターが含まれていない
$data = [];
Validator::make($data, $rules)->passes(); // true

// 値がnull
$data = ['parameter' => null];
Validator::make($data, $rules)->passes(); // false

// 値が空文字
$data = ['parameter' => ''];
Validator::make($data, $rules)->passes(); // true

// 値が半角スペース
$data = ['parameter' => ' '];
Validator::make($data, $rules)->passes(); // true

// 値が空配列
$data = ['parameter' => []];
Validator::make($data, $rules)->passes(); // false

$data = ['parameter' => 'a'];
Validator::make($data, $rules)->passes(); // false

$data = ['parameter' => ['a', 'b']];
Validator::make($data, $rules)->passes(); // false

Laravelでの実装はこちら。

まとめ

 パラメーターなしnull空文字空配列値あり
必須
(required)
falsefalsefalsefalsetrue
値があること
(filled)
truefalsefalsefalsetrue
存在すること
(present)
falsetruetruetruetrue
禁止
(prohibited)
truefalsetruefalsefalse