【问题标题】:cant't query json data in laravel 5.2无法在 laravel 5.2 中查询 json 数据
【发布时间】: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 信封中

标签: php json ajax vue.js


【解决方案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());
猜你喜欢
  • 2018-01-26
  • 2016-06-02
  • 1970-01-01
  • 2016-12-12
  • 2016-10-26
  • 1970-01-01
  • 2016-06-04
  • 2016-12-16
  • 2020-08-02
相关资源
最近更新 更多