Вы можете достичь этого несколькими способами.
Каждая Eloquent коллекция расширяет класс Collection , что позволяет использовать такой полезный метод, как Map()
:
// get your collection
$trainees = Trainee::all();
// customize them
$trainees->each(function ($trainee) {
$trainee->id = encrypt($item->id);
});
return $trainees;
PS: по умолчанию при возврате массива / коллекции в API Laravel возвращает его как JSON.
Второй подход, более детальный и рекомендуемый, на мой взгляд, заключается в использовании Ресурсы API . Из документации:
При создании API вам может понадобиться слой преобразования, который находится
между вашими моделями Eloquent и ответами JSON, которые на самом деле
вернулся к пользователям вашего приложения. Классы ресурсов Laravel позволяют
Вы выразительно и легко трансформируете свои модели и модели
коллекции в JSON.
Итак, вам нужно:
1. Создайте свой ресурс API
php artisan make:resource TraineeResource
2. Настройте его
App \ Http \ Resources \ TraineeResource.php
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class TraineeResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => encrypt($this->id),
// ...
];
}
}
3. Примените это
В вашем контроллере:
App / Http / Контроллеры / MyCoolController.php
use App\Http\Resources\TraineeResource
public function aCoolMethod(Request $request)
{
// get your collection
$trainees = Trainee::all();
// return it
return TraineeResource::collection($trainees);
}