Laravel 5.4控制器功能无法使用离子3

时间:2018-10-01 11:40:22

标签: laravel ionic-framework angular5

我试图将一个离子应用程序传递给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的记录,但无法返回{{1}的记录}从ionic 3应用程序发送来的邮件,如果有人可以帮助我,将非常高兴。

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

2 个答案:

答案 0 :(得分:0)

如果要将控制器功能与GET一起使用,则需要Route中的allow参数以允许id数组。

例如。

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

答案 1 :(得分:0)

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