无法在 laravel 5.2 中查询 json 数据
Posted
技术标签:
【中文标题】无法在 laravel 5.2 中查询 json 数据【英文标题】:cant't query json data in laravel 5.2 【发布时间】:2016-05-22 11:33:59 【问题描述】:我正在通过 laravel 5.2 和 vuejs 制作地址簿应用程序,我的应用程序需要 CRUD 功能,我停留在更新部分,我通过 ajax 将数据发送到 laravel 我在 laravel 中获取数据,但我无法更新行。 这是我在 vuejs 中处理更新的方法:
updatecontact:function()
var contactid = this.editingcontact.id;
var contact update = JSON.stringify(this.editingcontact);
this.$http(url: '/adressbook/'+contactid, data: contactupdate , method: 'PATCH')
.then(function (response)
console.log(response);
, function (response)
// error callback
);
这是在 laravel 中处理 ajax 请求的方法(它是一个 PUT)
public function update(Request $request, $id)
$adressbook = Adressbook::findorFail($id);
$adressbook->save($request->all());
最后这就是数据的样子:
contactupdate: ""id":5,"companyName":"poolad","zamineKar":"test","tel":"44044440","fax":"44044422","email""
【问题讨论】:
您是否尝试过输出您的 laravel 应用程序接收到的内容?dd($request->all());
.
从 laravel 访问时,您的所有数据都在联系人更新信封中吗?
@Jerodev 它返回这个:array:1 ["contactupdate" => ""id":5,"companyName":"poolad","zamineKar":"ریخته گری قطعات چدن و فولادی ","tel":"44044440","fax":"44044422","email":"info@pooladcrusher.com","adres":"تهران میدان نور ساختمان پولاد سنگ شکن","created_at": "2016-02-10 09:26:58","updated_at":"2016-02-10 12:30:16"" ]
@nbin 是的,它在联系人更新中
那么为什么当我想更新时会发生这种情况?我对发布请求也这样做,我的数据在 addcontact 信封中
【参考方案1】:
更好的方法是将this.editingcontact
作为数据发送:
updatecontact:function()
var contactid = this.editingcontact.id;
this.$http(url: '/adressbook/'+contactid, data: this.editingcontact , method: 'PATCH')
.then(function (response)
console.log(response);
, function (response)
// error callback
);
那么这个更新代码应该可以工作了:
public function update(Request $request, $id)
$adressbook = Adressbook::findOrFail($id);
$adressbook->update($request->all());
【讨论】:
我尝试了你的两个建议,但它不起作用,当我 dd 保存方法时它返回 true 但没有任何变化。 当我像这样一一获取数据时,它工作正常:$adressbook->companyName = $request->input('companyName')。但我想知道为什么 $request->all() 不能正常工作 您的一个或多个输入可能无法填写。在您的模型中,您应该有$fillable = ['companyName',...];
用于您希望能够使用数组填充的任何字段。这可能不应该包括id
。因此,将您想要填写的字段放入模型中,然后使用$adressbook->save($request->except('id'));
可填充的很好,我尝试了 except 方法并且还发送了没有 id 变量的数据,但我仍然对为什么 all() 方法不起作用感到失望
@moeinrahimi 修复你的 findorFail 方法的大小写(应该是findOrFail($id)
然后尝试使用更新方法$adressbook->update($request->all());
以上是关于无法在 laravel 5.2 中查询 json 数据的主要内容,如果未能解决你的问题,请参考以下文章
在 Eloquent 查询/Laravel 5.2 中使用变量