Laravelのバリデーションで配列の存在を確認する方法


  1. existsルールを使用する方法: Laravelのバリデーションルールの一つであるexistsを使用することで、配列内の値がデータベースに存在するかどうかを確認することができます。以下は、使用例です。
$rules = [
    'users.*' => 'exists:users,id',
];
$validator = Validator::make($data, $rules);

上記の例では、usersという配列内の全ての値がusersテーブルのidカラムに存在するかを検証しています。

  1. ルールオブジェクトを使用する方法: Laravelでは、カスタムなバリデーションルールを作成することもできます。配列の存在を確認するためのカスタムルールを作成し、それを使用することで、より柔軟にバリデーションを行うことができます。以下に例を示します。

まず、カスタムルールを作成します。

namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class ArrayExists implements Rule
{
    public function passes($attribute, $value)
    {
        // 配列内の値が存在するかどうかの検証ロジックを実装する
    }
    public function message()
    {
        return ':attribute内の値が存在しません。';
    }
}

次に、作成したカスタムルールを使用します。

$rules = [
    'users.*' => [new ArrayExists],
];
$validator = Validator::make($data, $rules);

上記の例では、usersという配列内の全ての値がカスタムルールArrayExistsを満たすかどうかを検証しています。

以上が、Laravelで配列の存在を確認するためのいくつかの方法です。必要に応じて、適切な方法を選択してバリデーションを行ってください。