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); 
} 
+0

没了,还是绕过验证。即使简化它只是试图验证年存在 - 删除事件数组,仍然失败:( –

+0

我更新了我的答案 –

+0

只是AJAX调用成功返回并将我重定向到它应该如果数据通过传递/ admin/costs'。所以现在工作好一点,它不会重定向,但是我看不到错误被传回来。 –