【发布时间】:2020-03-22 16:18:12
【问题描述】:
我覆盖(自定义操作和服务)我的应用程序的 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;
}
}
【问题讨论】:
标签: symfony doctrine api-platform.com soft-delete