如何将数据从Vue传递到Laravel进行补丁请求?

时间:2019-05-13 14:13:49

标签: laravel vue.js http-patch

我正在尝试将补丁请求从我的Vuetify数据表发送到Laravel,然后再发送到mySQL DB。

以下是我的controller.php,api.php和实际的Vuetify文件中的各种代码段:

api.php:

Route::patch('machines/{id}', [
    'as'   => 'machines/{id}',
    'uses' => 'MachineController@update'
]);

MachineController.php

$machines = Machine::find($request->id)->update();

实际的axios补丁要求。在.vue文件中:

Object.assign(this.machines[this.editedIndex], this.editedItem);

axios.patch("machines/" + this.editedItem.id, {
    editedItem: this.editedItem
})

在“望远镜有效载荷”部分中,我正在获取更新的对象,但同时我还收到一条消息:

  

“ SQLSTATE [23000]:   违反完整性约束:   1048列不能为空。

对于所有列。

我也尝试过将这种语法用于补丁方法:

if (this.editedIndex > -1) {
    Object.assign(this.machines[this.editedIndex], this.editedItem);
    axios
        .patch("machines/" + this.editedItem.id)
        .then(res => {
            this.editedItem = Object.assign({}, this.editedItem);
        })
        .catch(err => {
            console.log(err);
        });
} else {
    this.machines.push(this.editedItem);
}
this.close();

我试图这样设置控制器:

$machines = Machine::find($request->id);
$machines->machine_number = $request->input('machine_number');
$machines->machine_name = $request->input('machine_name');
$machines->machine_company = $request->input('machine_company');
$machines->machine_division = $request->input('machine_division');
$machines->machine_center = $request->input('machine_center');
$machines->machine_speed = $request->input('machine_speed');
$machines->save();

但是我仍然遇到相同的错误。 有人可以帮助我,或者至少指向正确的方向吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

我已经解决了我的问题:我在private static String LetterChanges(String str) { String change = ""; char[] alpha = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; for(int i = 0 ; i < str.length() ; i++) { change = change.concat(Character.toString(getNextChar(str.charAt(i), alpha))); } return change; } private static char getNextChar(char eachChar, char[] alpha) { int charIndex = -1; for(int i = 0 ; i < alpha.length ; i++) { if(alpha[i] == eachChar) { charIndex = i; break; } } if(charIndex != -1) { //To handle the last indexed char if(charIndex == alpha.length-1) { return alpha[0]; } else { return alpha[charIndex+1]; } } //default for unknown character return '-'; } 请求中传递了空对象,因为我将其设置为错误。我将对象的结构更改为axios.patch()对,瞧,它起作用了!