将多个变量发送到laravel Api资源
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将多个变量发送到laravel Api资源相关的知识,希望对你有一定的参考价值。
我想要不同类型的集合。一个包含用户acros城市和另一个包含附近的用户。我希望这些来自单个api命中。可能吗 ?如果是,那么请建议如何做到这一点。
我做了什么
return ServiceProviderCollection::collection($near_by);
输出:
"data": [
{
"username": "??",
"email": "??",
"rating": 0,
"role_id": 2,
"wallet": "0"
}
],
我想要
return ServiceProviderCollection::collection($near_by,$across_city);
预期产量:
{
"across_city": {
"data": [
{
"username": "??",
"email": "??",
}
],
},
"near_by": {
"data": [
{
"username": "??",
"email": "??",
}
],
}
}
答案
不,你不能在Resource
传递2个物体。你可以这样做
return [
'across_city' => ServiceProviderCollection::collection($across_city),
'near_by' => ServiceProviderCollection::collection($near_by)
];
编辑:评论后
如果你想显示分页信息,那么你必须创建单独的控制器动作,然后返回ServiceProviderCollection::collection
然后你将得到带有分页元信息的结果。
在你的控制器ex中创建这些动作。 (UserController
)
public function acrossCity(){
$acrossCity = User::where('city','test')->paginate(10); //example
return ServiceProviderCollection::collection($acrossCity);
}
public function nearBy(){
$nearBy = User::where('near','1')->paginate(10); //example
return ServiceProviderCollection::collection($nearBy);
}
为这些创建路线
Route::get('user/acrossCity','UserController@acrossCity');
Route::get('user/nearBy','UserController@nearBy');
检查文件https://laravel.com/docs/5.6/eloquent-resources#pagination
注意:使用资源类时,请将其命名为Collection
。对于你的情况,你应该将资源命名为ServiceProviderResource
然后当你调用它的集合然后ServiceProviderResource::collection($object)
但是当返回单个对象然后new ServiceProviderResource($object)
。
以上是关于将多个变量发送到laravel Api资源的主要内容,如果未能解决你的问题,请参考以下文章
如何正确地将排序模型从我的控制器发送到 Laravel API 资源集合?