Symfony2 Doctrine SoftDeletable和JMSSerializerBundle无法协同工作

时间:2013-04-11 08:39:00

标签: rest symfony doctrine-orm jmsserializerbundle doctrine-extensions

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

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

一旦我“软删除”一家公司,我的功能就要求所有公司不再工作,因为它会抛出一个未找到实体的例外... 有没有办法确保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,
    );
}

2 个答案:

答案 0 :(得分: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,
    );
}

警告,它会返回所有,甚至 DELETED 实体。

答案 1 :(得分:1)

需要添加到配置

INSERT INTO Consultation_Slot 
VALUES (1000000,'I need to learn maths','avaliable','', 13:30, 1-28-2018, 
        'Sunday', 'RN001', 1111, 880001, 30001);
GO

并添加到实体

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