[PHP][Laravel] JSON内の値(複数行)をバリデーションする

バージョン

Laravel 5.8

概要

JSONで渡された複数行のデータに対してバリデーションする。 例として以下のJSONに対して、バリデーションを実施する。
◾️JSON

[{"id": 1, "val": "abcde"}, {"id": 2, "val": "あいうえお"}, {"id": 3, "val": ""}]

◾️バリデーションルール

  1. データは10項目まで
  2. valは必須で100文字以内

コード

◾️HogeController

    public function HogeInput(Request $request)
    {
        // JSONをデコード
        $validation_data = json_decode($params['json_val'], true);
        
        // バリデーション
        // データ数の検証
        $rules = [
            'remarks' => 'array|max:10'
        ];
        $validator = Validator::make(['remarks' => $validation_data], $rules);
        if ($validator->fails()) {
            return response()->error($validator->errors()->all());
        }

        // 各行の検証
        foreach ($validation_data as $key => $value) {
            $rules = [
                'val' => 'required|max:100'
            ];
            $validator = Validator::make($value, $rules);
            if ($validator->fails()) {
                return response()->error($validator->errors()->all());
            }
        }

    }



PHPフレームワークLaravel入門 第2版

PHPフレームワークLaravel入門 第2版