У меня есть большая форма. Данные из этой формы сохраняются в две таблицы. Часть в одну, часть в другую.
Я вижу варианты:
Один общий валидатор. Потом каждое поле раскидывать по моделям
$validator = Validator::make();
$validator1->validate();
//...
$model1->update([
'field1_1' => $request->get('field1_1'),
// Дофига полей
]);
$model2->create([
'field2_1' => $request->get('field2_1'),
// Дофига полей
])
Или написать два валидатора и сократить вторую часть.
$validator1 = Validator::make();
$validator2 = Validator::make();
$data1 = $validator1->validate();
$data2 = $validator2->validate();
$model1->update($data1);
$model2->create($data2);
Но тут утыкаюсь в проблему отлова ошибок валидации. Пишу что-то такое, но не нравится:
try {
$data = $validator1->validate();
} catch (ValidationException $e) {
return redirect()->back()->withErrors($validator1)->withInput();
}
try {
$data = $validator2->validate();
} catch (ValidationException $e) {
return redirect()->back()->withErrors($validator2)->withInput();
}
Что делать? Может как-то два валидатора объединить можно? Или вообще как-то по другому все описать? Или оставить первый вариант, пусть и несколько более многословный?