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)
})
}
沒了,還是繞過驗證。即使簡化它只是試圖驗證年存在 - 刪除事件數組,仍然失敗:( –
我更新了我的答案 –
只是AJAX調用成功返回並將我重定向到它應該如果數據通過傳遞/ admin/costs'。所以現在工作好一點,它不會重定向,但是我看不到錯誤被傳回來。 –