Laravel多重插入验证
问题描述:
我有一个体育赛事db表。每个活动都有一年,活动名称和活动获胜者。Laravel多重插入验证
我的这张表的管理视图允许按年份对事件进行分组并且批量插入(通常一次8个体育事件行)。我有一张用Vue编写的表格,最多可以将8个体育赛事行添加到界面中,填充和提交字段。这工作井。
这种情况的方法是
public function storeMultiple(Request $request)
{
$year = $request->year;
$newEvents = $request->events;
foreach ($newEvents as $key => $value) {
DB::table('sport_events')->insert([
'team_id' => 1,
'sort_order' => $value['sort_order'],
'year' => $year,
'event' => $value['event'],
'winner' => $value['winner'],
'created_at' => Carbon::now(),
'updated_at' => Carbon::now()
]);
}
}
虽然我知道这是不是一个伟大的方式(DB结构限制了我在这里,而不是一年中的关键和体育赛事)和这样一个小而稀少用例,我很高兴与性能权衡。
表单通过Axios提交给我的路由,所有内容都按照我的预期登录到数据库中。
现在我正在为该方法添加验证,确保每个事件都有事件名称和获胜者。
$validator = Validator::make($request->all(), [
'year' => 'required',
'events.*' => 'required',
]);
if ($validator->fails()) {
return response()->json([ 'errors' => $validator ]);
}
似乎我的提交绕过了我已经到位的验证检查,获得了成功的地位。
我Vue公司提交方法做到这一点
submit() {
axios({
method: 'post',
url: '/admin/sports',
data: {
year: this.year,
sports: this.sports
}
}).then((response) => {
window.location.href = '/admin/sports'
}).catch((error) => {
// error
})
}
我在哪里在这个方法的问题呢?
UPDATE:蒂亚戈的建议解决的事情,但我则不得不更新我的Vue组件内提交方法来获取示数显示
submit() {
axios({
method: 'post',
url: '/admin/sports',
data: {
year: this.year,
sports: this.sports
}
}).then((response) => {
window.location.href = '/admin/sports'
}).catch((error) => {
this.errors = error.response.data.errors
console.log(this.errors)
})
}
答
试试这个:
$validator = Validator::make($request->all(), [
'year' => 'required',
'events.*.event' => 'required',
'events.*.winner' => 'required',
]);
你什么的意思您的问题文本通过“获得成功状态”?
数据是否进入数据库,或者您的意思是AJAX调用成功返回?
要失败的AJAX请求使用:
if ($validator->fails()) {
return response()
->json([ 'errors' => $validator->errors()->messages() ])
->setStatusCode(400);
}
没了,还是绕过验证。即使简化它只是试图验证年存在 - 删除事件数组,仍然失败:( –
我更新了我的答案 –
只是AJAX调用成功返回并将我重定向到它应该如果数据通过传递/ admin/costs'。所以现在工作好一点,它不会重定向,但是我看不到错误被传回来。 –