在 Symfony2 项目中,我有一个 Doctrine 实体,它有一个名为 lastAccessed
的 datetime
字段。此外,该实体使用 Timestampable在 updatedAt
字段上。
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/