我试图将一个离子应用程序传递给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
的记录。但是获取请求是我想要的。
答案 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;
}