4

我正在为 Symfony2 和 Doctrine 使用 Gedmo SoftDeletable 过滤器(https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/softdeleteable.md

我还使用 JMSSerializerBundle 为我的 REST API 序列化对 JSON 的响应。

一旦我“软删除”一家公司,我请求所有公司的功能就不再起作用了,因为它会引发 Entity not Found 异常......有没有办法确保 JMSSerializerBundle 忽略我的数据库中的软删除实体?

我的 all() 函数如下所示:

/**
 * All action
 * @return array
 * 
 * @Rest\View
 */
public function allAction()
{
    $em = $this->getDoctrine()->getManager();

    $entities = $em->getRepository('TestCRMBundle:Company')->findAll();

    return array(
        'companies' => $entities,
    );
}
4

2 回答 2

3

由于嵌套关系,目前不支持,暂时无能为力。

但是,您可以禁用 SoftDeletable 行为:

/**
 * All action
 * @return array
 * 
 * @Rest\View
 */
public function allAction()
{
    $em = $this->getDoctrine()->getManager();

    $em->getFilters()->disable('softdeletable'); // Disable the filter

    $entities = $em->getRepository('TestCRMBundle:Company')->findAll();

    return array(
        'companies' => $entities,
    );
}

请注意,它将返回ALL,甚至是DELETED实体。

于 2013-04-14T08:48:10.193 回答
1

需要添加到配置中

    orm:
    filters:
        softdeleteable:
            class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter
            enabled: true

并添加到实体

use Gedmo\Mapping\Annotation as Gedmo;

 * @ORM\HasLifecycleCallbacks
 * @Gedmo\SoftDeleteable(fieldName="deletedAt")
于 2018-01-28T15:29:49.580 回答