Symfony,带控制台的FosUserBundle和GEDMO - Blameable

时间:2014-11-14 11:35:31

标签: symfony command fosuserbundle

我在我的实体课中有这样的想法:

    /**
 * @Gedmo\Blameable(on="update")
 * @ORM\ManyToOne(targetEntity="FoSUserSomeeWhere:)")
 * @ORM\JoinColumn(name="updated_by", referencedColumnName="id")
 */
protected $updatedBy;

我想更新这个实体而不记录 - 为什么?因为我需要使用console命令来完成此操作。 Allready建立了一项服务。对此有什么解决方案吗? Meyby有些默认用户吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试删除侦听器。

<?php

    $listenerInst = null;
    $evm = $em->getEventManager();
    foreach ($evm->getListeners() as $listeners) {
        foreach ($listeners as $listener) {
            if ($listener instanceof \Gedmo\Blameable\BlameableListener) {
                $listenerInst = $listener;
                break 2;
            }
        }
    }
    if ($listenerInst) {
        $evm->removeEventListener(array('onFlush'), $listenerInst);
    }

答案 1 :(得分:0)

您必须停用 Blameable 过滤器。

<?php

// This will disable filter (adapt the filter name with your configuration)
$em->getFilters()->disable('blameable');

/* Your code with entity manager flush */

// This will enable filter
$em->getFilters()->enable('blameable');