laravel使用updateOrCreate作为对象数组

时间:2019-03-08 16:14:56

标签: laravel-5.5

我是laravel的新手,并使用axiosvue 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'];

0 个答案:

没有答案