2017-08-11 78 views
0

我有一個體育賽事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) 
       }) 
      } 

回答

1

試試這個:

$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'。所以現在工作好一點,它不會重定向,但是我看不到錯誤被傳回來。 –