Проблема Ajax с Laravel 5.7 и красноречивым - PullRequest
0 голосов
/ 18 ноября 2018

Путь к контроллеру

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

Модель Tienda

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

Ошибка:

  • Не удалось загрузить ресурс: сервер ответил с состоянием 500 (Внутренняя ошибка сервера) / ajax-BodegasFind? Ctienda = 3: 1

  • Метод Illuminate \ Database \ Eloquent \ Collection :: bodegas не существует.

  • Или метода toJson не существует, это очень странно.

Pd:

  • Я уже попробовалтокен csrf и все то же самое.

Ответы [ 2 ]

0 голосов
/ 18 ноября 2018

Вы не можете вызвать метод статического поиска для объекта экземпляра и не можете передать объект запроса в методе поиска.Требуется только идентификатор первичного ключа.Вы должны изменить свой код следующими двумя способами.У вас должна быть связь со значком в вашей модели (если вы хотите получить связанные данные).В противном случае просто вызовите свойство.

Вариант 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();
}
0 голосов
/ 18 ноября 2018

вы меняете свой код так:

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

у вас должен быть метод отношений bodegas в вашей Tienda, а в методе find вы должны отправить id, а не объект Request. Возможно, вы измените методы поиска.все в порядке, если вы делаете это, надеюсь, его помощь

...