【问题标题】:Problem Ajax with Laravel 5.7 and eloquentLaravel 5.7 和 eloquent 的问题 Ajax
【发布时间】:2019-04-20 20:53:55
【问题描述】:

控制器路径

Route::get('ajax-BodegasFind','AjaxController@ajaxBodegasFind')->name('ajax.bodegasfind');

函数“ajaxBodegasFind”

public function ajaxBodegasFind(Request $Request)
{
  $Tienda = new Tienda;
  $Bodegas = $Tienda::find($Request)->bodegas();
  return $Bodegas->toJson();
}

Ajax 脚本

$(document).ready(function(){

    $('#cod_tienda').change(function(e){

      e.preventDefault();
      var ctienda = $("#cod_tienda").val();

      $.ajax({
        type: 'get',
        url:'{{route('ajax.bodegasfind')}}',
        data: {
          "ctienda": ctienda,
        },
        dataType: 'json',
        success: function(data){
           console.log(data);
           $('#cod_bodega').html(data);
        }
    });
  });
});

模型天达

public function bodegas(){
  return $this->hasMany('genericlothing\Bodega','cod_tienda','cod_tienda');
}

错误:

  • 加载资源失败:服务器响应状态为 500(内部服务器错误)/ajax-BodegasFind?ctienda=3:1

  • 方法 Illuminate\Database\Eloquent\Collection::bodegas 不存在。

  • 或者方法toJson不存在,很诡异。

钯:

  • 我已经尝试了 csrf 令牌,一切都一样。

【问题讨论】:

    标签: ajax laravel eloquent has-many


    【解决方案1】:

    你像这样改变你的代码:

    public function ajaxBodegasFind(Request $Request)
    {
      
      $Bodegas = (Tienda::find($Request->id))->bodegas;
      return $Bodegas->toJson();
    }

    您应该在您的 Tienda 中使用 bodegas 关系方法 在 find 方法中,您应该发送 id 而不是 Request 对象。也许您更改了 find 方法。如果你这样做就可以了 希望对您有所帮助

    【讨论】:

    • 试图获取非对象的属性'bodegas'
    • 对不起,这是 $Request->ctienda
    【解决方案2】:

    您不能在实例对象上调用静态查找方法,也不能在查找方法中传递请求对象。它只需要主键ID。您应该通过以下两种方式更改您的代码。您的模型中必须有徽章关系(如果您想获取相关数据)。否则,只需调用该属性。

    选项 1。

    public function ajaxBodegasFind(Request $Request)
    {
      $Tienda = new Tienda;
      $Bodegas = $Tienda->find($Request->id)->bodegas;
      return $Bodegas->toJson();
    }
    

    选项 2。

    public function ajaxBodegasFind(Request $Request)
    {
       $Bodegas = Tienda::find($Request->id)->bodegas;
       return $Bodegas->toJson();
    }
    

    【讨论】:

    • 试图获取非对象的属性'bodegas'
    • 对不起,es $请求-> ctienda
    • 如何才能让我的“ajax 脚本”在页面加载时执行?
    猜你喜欢
    • 1970-01-01
    • 2019-02-11
    • 2019-08-25
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多