无法在 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 中使用变量

Laravel 5.2 PHPUnit JSON Api 请求正文未设置

无法在 Laravel 5.2 中使用外键迁移

Soap服务器无法在Laravel 5.2中运行

无法在Laravel 5.2中的中间件中注入依赖项

Laravel 5.2:无法调用构造函数