无法查询 JSON (Laravel + VueJS)
Can't query JSON (Laravel + VueJS)
我的问题与这个完全相似
已经尝试从中实现正确答案,但仍然没有运气。
不知道为什么....
之前,我也发现了这个,已经尝试使用他的建议,但也不走运。
这是我的 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"
我是不是漏掉了什么??
有什么建议吗?
谢谢
正如我向您建议的那样,尝试在控制器的 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 请求响应中看到它。
这应该适合你!
翻了翻,问了这么多人,终于找到了!请求或响应没有任何问题。我的错误是我使用的增变器更新和我的模型。
更新答案
原因回答 然后我只是更改了控制器上的更新功能。结果
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'
没有条件。
此案例是针对与其他模型(表)没有任何关系的模型,或者模型充当主人。
我的问题与这个完全相似
已经尝试从中实现正确答案,但仍然没有运气。 不知道为什么....
之前,我也发现了这个
这是我的 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"
我是不是漏掉了什么?? 有什么建议吗?
谢谢
正如我向您建议的那样,尝试在控制器的 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 请求响应中看到它。
这应该适合你!
翻了翻,问了这么多人,终于找到了!请求或响应没有任何问题。我的错误是我使用的增变器更新和我的模型。
更新答案
原因回答
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'
没有条件。
此案例是针对与其他模型(表)没有任何关系的模型,或者模型充当主人。