Для преобразования объекта базы данных в ответ API, ресурсы поддержки Laravel, например. UserResource extends JsonResource
. Ресурс позволяет мне четко определить, какие поля из сущности следует включить в ответ, как их преобразовать и т. Д.
Есть ли подобный функционал для запросов? Мои запросы обычно выглядят так:
public function create(JsonRequest $request): UserResource
{
$data = $request->json()->all();
/* Remove, transform, add request fields etc. */
$user = User::create($data);
$user->save();
return new UserResource($user);
}
В нашем случае у нас есть устаревшая база данных за современным API, поэтому существует ряд полей, которые необходимо преобразовать, переименовать и т. Д., Прежде чем помещать их в класс сущностей. Поля отличаются от запроса к запросу, но шаги очень похожи. Есть ли менее наглядный способ сделать это, что-то похожее на то, как ресурсы преобразуют сущности в ответы?
Что-то вроде:
class UserRequest extends JsonRequest {
public function fromArray(JsonRequest $request) {
…
}
}
Тогда запрос может выглядеть так:
public function create(UserRequest $request): UserResource
{
$user = User::create($request);
$user->save();
return new UserResource($user);
}