Я переопределяю (пользовательская операция и служба) операцию DELETE моего приложения, чтобы избежать удаления данных из БД. Я обновляю значение поля: isDeleted === true
.
Вот мой контроллер:
class ConferenceDeleteAction extends BaseAction
{
public function __invoke(EntityService $entityService, Conference $data)
{
$entityService->markAsDeleted($data, Conference::class);
}
...
Мой сервис:
class EntityService extends BaseService
{
public function markAsDeleted(ApiBaseEntity $data, string $className)
{
/**
* @var ApiBaseEntity $entity
*/
$entity = $this->em->getRepository($className)
->findOneBy(["id" => $data->getId()]);
if ($entity === null || $entity->getDeleted()) {
throw new NotFoundHttpException('Unable to find this resource.');
}
$entity->setDeleted(true);
if ($this->dataPersister->supports($entity)) {
$this->dataPersister->persist($entity);
} else {
throw new BadRequestHttpException('An error occurs. Please do try later.');
}
}
}
Как скрыть «удаленные» элементы из коллекции на глаголе GET (отфильтруйте их по результату, чтобы они не были видны)?
Вот моя операция для глагола GET, я не знаю, как с этим справиться:
class ConferenceListAction extends BaseAction
{
public function __invoke(Request $request, $data)
{
return $data;
}
}