Отправить несколько переменных в ресурсы laravel Api - PullRequest
0 голосов
/ 10 сентября 2018

Я хочу другой тип коллекции .. Один, содержащий пользователей через город, и другой, содержащий рядом пользователей. Я хочу это от одного хита 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": "??",

            }
        ],

    }
}

1 Ответ

0 голосов
/ 10 сентября 2018

Нет, вы не можете передать 2 объекта в Resource. Вы можете сделать это так

return [
         'across_city' =>  ServiceProviderCollection::collection($across_city),
         'near_by' => ServiceProviderCollection::collection($near_by)
       ];

Редактировать: После комментария

Если вы хотите отобразить информацию о разбиении на страницы, вам нужно создать отдельное действие контроллера и затем вернуть ServiceProviderCollection::collection, тогда вы получите результат с мета-информацией о разбиении на страницы.

создать эти действия в вашем контроллере, напр. (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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...