问题 Ajax Laravel 5.7 和 eloquent

Problem Ajax with Laravel 5.7 and eloquent

控制器路径

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');
}

错误:

PD:

你这样修改你的代码:

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

你的Tienda应该有酒窖关系法 在 find 方法中,您应该发送 id 而不是 Request 对象。也许您更改了 find 方法。如果你这样做没关系 希望对你有帮助

不能在实例对象上调用静态查找方法,也不能在查找方法中传递请求对象。它只需要主键 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();
}