symfony - 禁用 Doctrine Timestampable 在某些更新时自动更新 `updatedAt` 字段

标签 symfony doctrine-orm

在 Symfony2 项目中,我有一个 Doctrine 实体,它有一个名为 lastAccesseddatetime 字段。此外,该实体使用 TimestampableupdatedAt 字段上。

namespace AppBundle\Entity;

use
    Doctrine\ORM\Mapping as ORM,
    Gedmo\Mapping\Annotation as Gedmo
;

class MyEntity {

    /**
     * @ORM\Column(type="datetime")
     */
    private $lastAccessed;

    /**
     * @ORM\Column(type="datetime")
     * @Gedmo\Timestampable(on="update")
     */
    private $updatedAt;

}

我需要更新字段lastAccessed,而不更新updatedAt 字段。我怎样才能做到这一点?

最佳答案

我也偶然发现了这个问题并想出了这个解决方案:

public function disableTimestampable()
{
    $eventManager = $this->getEntityManager()->getEventManager();
    foreach ($eventManager->getListeners('onFlush') as $listener) {
        if ($listener instanceof \Gedmo\Timestampable\TimestampableListener) {
            $eventManager->removeEventSubscriber($listener);
            break;
        }
    }
}

当然也可以使用非常相似的东西来禁用可指责的行为。

关于symfony - 禁用 Doctrine Timestampable 在某些更新时自动更新 `updatedAt` 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29533795/

相关文章:

php - Zend Framework 2 - 用于教义和注释表单的 Magic Getter 和 Setter

php - 使用 parameter.yml 值的 Symfony 3 Datafixtures

symfony - Doctrine 2.1 - 多对多级联合并后关系丢失 - Symfony2

symfony - JMS序列化器如何手动处理序列化?

php - Symfony2 从 ssl 子域注销

symfony - FosElasticaBundle:定义GUID/UUID字段的映射

symfony - 有没有办法设置 Doctrine 事件监听器,将每个实体查询限制为特定字段 id?

php - 有没有办法检测字符串在 PHP 或 symfony 中是否具有有效的 HTML 语法?

php - Swiftmailer 发送后删除附件

mysql - Doctrine2 指定长度的整数类型