Функция контроллера Laravel 5.4 не может использовать параметр запроса get от ionic 3 - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь передать из ионного приложения в приложение laravel 5.4, и этот параметр является массивом, мне удалось успешно передать параметр, но я могу использовать этот параметр для выбора записей из базы данных.

Вот моя функция поставщика ionic 3:

 getMySmartQueues(data){
      let params = new HttpParams();
      params = params.append("sq_ids", JSON.stringify(data));

      return this.http.get(this.url + 'my/smart/queues', {params: params});
  }

А вот моя функция контроллера laravel:

public function getMySmartQueues(Request $request){

        $ids = $request['sq_ids'];

        $my_sq = SmartQueue::whereIn('id', $ids)->get();

        return $my_sq;
    }

А вот как я могу подписаться на функцию провайдерамоя страница:

ionViewDidLoad() {

      this.storage.get('sq_ids').then(
          res => {
              console.log(res);
              if(res != null){
                  this.sq_ids= res;
                  console.log(this.sq_ids);

                  this.mService.getMySmartQueues(this.sq_ids).subscribe(
                      data => {
                          console.log(data);
                      }
                  );
              }
          }
      );

  }

Но я получаю внутреннюю ошибку сервера.Но если мне нужно жестко закодировать значение по умолчанию для функции контроллера, скажем, как [5,6], он вернет записи этого ids, но не сможет вернуть записи ids, отправленные с ionic 3приложение, буду рад, если кто-нибудь может мне помочь.

Также, если я изменю запрос на запрос put, я могу получить записи ids, отправленные из ионного приложения.Но я хочу получить запрос.

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Я понял это, и это то, что я должен был сделать, я думаю, что это может помочь кому-то однажды, мне просто нужно было json_decode запрос вот так:

 public function getMySmartQueues(Request $request){
        $ids = $request['sq_ids'];
        $my_sq = SmartQueue::whereIn('id', json_decode($ids))
                                ->with(
                                    'station.company'
                                )->get();
        return $my_sq;
    }
0 голосов
/ 01 октября 2018

если вы хотите использовать функцию контроллера с GET, вам нужно разрешить аргументы в Route, чтобы разрешить ваш массив идентификаторов.

для примера.

Route::get('your/url/{ids}', 'Controller@function')->name('mane_of_the_route');

ифункция контроллера

public function getMySmartQueues(array $ids){

    $my_sq = SmartQueue::whereIn('id', $ids)->get();

    return $my_sq;
}
...