Модель раскладывается на три составляющие: класс сущности (Entity), класс работы с бд(Repository) и класс для бизнес логики (Service)
а пример простой
<?php
class Controller
{
private $userService;
function __construct(UserService $userService)
{
$this->userService = $userService;
}
public function show(int $id){
try{
$user = $this->userService->getById($id);
}
catch(UserNotFound $ex){
return new Response(null,404);
}
return new JsonResponse($user->toArray(),200);
}
}
class UserService
{
private $userRepository;
function __construct(UserRepository $userRepository)
{
$this->userRepository = $userRepository;
}
public function getById(int $id): User
{
if(!$user = $this->userRepository->findById($id))
{
throw new UserNotFound($id);
}
return $user;
}
}