我是laravel的新手,并使用axios
从vue js
发布数据数组。
使用此方法:
axios.post("/student/qualification", this.qitems)
.then(response => {
this.pullQAttachments();
this.$snotify.success("Qualification updated Sucessfully", "Success");
})
.catch(e => {
console.log(e);
});
数组的格式为:
[{
"id": 5,
"student_id": 41,
"board": "SLC",
"year_of_completion": "2014",
"aggregate_percent": "45%",
"symbol_no": "43565656",
"division": "First",
"created_at": "2019-03-08 14:26:06",
"updated_at": "2019-03-08 14:26:06",
"deleted_at": null
}, {
"id": null,
"student_id": "41",
"board": "10 +2",
"year_of_completion": "2200",
"aggregate_percent": null,
"symbol_no": null,
"division": null
}]
在控制器中:
我想更新第一个元素,即id=5
并在id=null
处创建新元素
我已经尝试过此处给出的方法:
public function postStudentQualification(Request $request)
{
$datas = $request->all();
foreach ($datas as $qual) {
StudentQualification::updateOrCreate(
['id' => $qual["id"]],
[
'student_id' => $qual["student_id"],
'board' => $qual["board"],
'symbol_no' => $qual["symbol_no"],
'aggregate_percent' => $qual["aggregate_percent"],
'division' => $qual["division"],
'year_of_completion' => $qual["year_of_completion"]
]);
}
}
实际上,这种方法可以按预期工作,但是还有另一种使用updateOrCreate
而不分配像
'student_id'=> $qual["student_id"],
或者,我尝试使用这种方式updateOrCreate
,但是失败了:
public function postStudentQualification(Request $request)
{
$datas = $request->all();
foreach ($datas as $qual) {
StudentQualification::updateOrCreate(
['id' => $qual["id"]],
[
$qual
]);
}
}
我要从vue.js
上的Model
发布完全相同的值,
protected $fillable = ['student_id','board','year_of_completion','aggregate_percent','symbol_no','division'];