Как проверить и вставить массив объектов в php?

Я хочу проверить и вставить массив объектов в мою базу данных. Это мой массив объектов: (Front js)

studentData: [
  {id: 1, name: 'Juan'},
  {id: 2, name: 'Jema'},
]

Это мой текущий код для StudentController.php:

for($i; $i <= count($request->input());  $i++){
  $student = Student::create([
    'id' => $request[$i]["id"],
    'name' => $request[$i]["name"],
  ]);
}

и это прекрасно работает, когда я вставляю все свои объекты. Теперь я хочу проверить все запросы. Этот код не работает:

$validate = $request[$i]->validate([
                'id' => 'required|unique:students|numeric'
            ]);

for($i; $i <= count($request->input());  $i++){
  $validate = $request[$i]->validate([
    'id' => 'required|unique:students|numeric'
  ]); //this is the error. I cant validate the data foreach user

  $student = Student::create([
    'id' => $request[$i]["id"],
    'name' => $request[$i]["name"],
  ]);
}

1 ответ

Решение

Вы должны сделать проверку ввода массива с точкой, как это:

$this->validate($request,[
    'studentData.*.id' => 'required|unique:students|numeric',
    'studentData.*.name' =>'required'
],
$messages = [
 // write error messages
]);

Я надеюсь, что вы поймете.

Вы можете увидеть документы Laravel для проверки ввода массива здесь https://laravel.com/docs/5.6/validation

Другие вопросы по тегам