首页 > 解决方案 > Laravel 5.4 控制器功能无法使用来自 ionic 3 的获取请求参数

问题描述

我正在尝试将 ionic 应用程序传递给 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],它将返回 this 的记录ids,但它不能返回ids从 ionic 3 应用程序发送的记录,如果有人可以的话,我会很高兴帮帮我。

此外,如果我将请求更改为请求,put我可以获得ids从离子应用程序发送的记录。但是我想要一个获取请求。

标签: laravelionic-frameworkangular5

解决方案


我已经弄清楚了,这就是我必须做的,我认为有一天它可能会对某人有所帮助,我只需要这样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;
    }

推荐阅读