2

我的问题与这个不能在 laravel 5.2 中查询 json 数据完全相似

已经尝试从中实现正确的答案,但仍然没有运气。我不知道为什么......

以前,我也发现了这个带有 PUT / PATCH 请求的 Laravel 5.2 Codeception 功能测试问题,已经尝试使用他的建议,但也没有运气。

这是我的 Laravel 控制器

public function update(Request $request, $id)
{
    $phonebook = Phonebook::findOrFail($id);
    $phonebook->update($request->all());

    // even i try this
    // Phonebook::findOrFail($id)->update($request->all());
    // return Response::json() or return response()->json();
    // No luck
}

我在 vue 脚本中用于更新数据的函数

editContact: function(id)
    {
        this.edit = true
        var contactid = this.newContact.ID

        this.$http.patch('/api/contact/' + contactid, this.newContact, function (data) {
            console.log(data)
        })
    },

将我的 vue 脚本更改为与上述问题的正确答案相同,结果相同。没有效果。

我的按钮可以像这样进行编辑

<form action="#" @submit.prevent="addNewContact">

        <div class="form-group">
            <label for="contactName">Name : </label>
            <input type="text" v-model="newContact.CONTACTNAME" class="form-control" id="contactName">
        </div>

        <div class="form-group">
            <label for="phoneNumber">Phone number : </label>
            <input type="text" v-model="newContact.PHONENUMBER" class="form-control" id="phoneNumber">
        </div>

        <div class="form-group">
            <button class="btn btn-primary btn-sm" type="submit" v-if="!edit">Add new Contact</button>
            <button class="btn btn-primary btn-sm" type="submit" v-if="edit" @click="editContact(newContact.ID)">Edit Contact</button>
        </div>

    </form>

注意:我使用资源或手动路由的路由文件总是相同的

Route::resource('/api/contact/', 'PhonebookController');

或者

patch('/api/contact/{id}', ['uses' => 'PhoneboookController@update']);

然后,有一些奇怪的东西。 详细要求

(也许我错了)如果我们看细节没有问题或错误。但是,如果我们更改为响应选项卡,结果为空 没有反应!

在所有这些过程之后,数据没有任何反应。

CONTACTNAME 应该是“Mizukiaaaaaaaa”,就像第一个屏幕截图一样,而不是“Mizuki” 在此处输入图像描述

我错过了什么吗?有什么建议吗?

谢谢

4

2 回答 2

0

正如我向您建议的那样,尝试update在您的控制器中反转您的方法中的参数。
要获得响应,您必须将其发回(使用代码 200、400、401,无论您想要什么)。

public function update($id, Request $request)
{
    $phonebook = Phonebook::findOrFail($id);
    $phonebook->update($request->all());

    // your treatment

    return Response::json([
       'param' => 'value'
    ], 200);

}

如果您想调试并在响应中看到它,您可以dd('debug')在您的方法中创建一个,您将在 Ajax 请求响应中看到它。

那应该对你有用!

于 2016-02-21T23:49:50.603 回答
0

浏览了很多人,问了这么多,终于找到了!请求或响应没有任何问题。我的错误是我使用的突变更新和我的模型。

更新的答案

原因在这里回答,然后我只是更改了控制器上的更新功能。这里的结果

public function update(Phonebook $phonebook, Request $request, $id)
{
    // You can add any fields that you won't updated, usually primary key
    $input = $request->except(['ID']);

    // Update query
    $saveToDatabase = $phonebook->where('ID', '=', $id)->update($input);
    return $saveToDatabase;
}

我之前的回答更新了包括主键在内的所有字段,以某种方式成功更新了数据,但肯定会留下错误(重复的主键)。查询看起来像UPDATE SET field = 'value'没有条件。

这种情况适用于与其他模型(表)没有任何关系的模型,或者模型充当主模型。

于 2016-02-22T00:47:07.280 回答