Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2条令在关联更改/更新/创建时更新用户实体时间戳_Php_Symfony_Doctrine Orm - Fatal编程技术网

Php Symfony2条令在关联更改/更新/创建时更新用户实体时间戳

Php Symfony2条令在关联更改/更新/创建时更新用户实体时间戳,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有一个用户实体,每次设置/添加/创建/编辑/删除关联(无论是OneToOne还是OneToMany)时,我都要更新其“更新的”日期时间字段。基本上,我想知道什么时候我的应用程序中与用户相关的内容发生了变化 除此之外,是否建议始终通过从用户实体调用->addXXX($xxx)来添加关联并将其级联保存?在我的应用程序的某些部分中,我从关系的另一端设置用户,当使用Symfony2表单时,它会自动这样做(我想是吧?) 最好的方法是什么?在设置用户的关联实体的每一种方法中手动执行这项操作都是过分的。我认

我有一个用户实体,每次设置/添加/创建/编辑/删除关联(无论是OneToOne还是OneToMany)时,我都要更新其“更新的”日期时间字段。基本上,我想知道什么时候我的应用程序中与用户相关的内容发生了变化

除此之外,是否建议始终通过从用户实体调用
->addXXX($xxx)
来添加关联并将其级联保存?在我的应用程序的某些部分中,我从关系的另一端设置用户,当使用Symfony2表单时,它会自动这样做(我想是吧?)


最好的方法是什么?在设置用户的关联实体的每一种方法中手动执行这项操作都是过分的。

我认为不可能通过常规doctrine2或原始SQL机制自动执行。Doctrine2甚至不总是加载所有相关实体以获得性能(请参阅)

我建议的最佳方法是为您不希望监视的相关实体实现
EntityListener
。使用
postapdate
处理程序,您应该能够显式地更改父实体的时间戳字段

即儿童班

/** @Entity @EntityListeners({"ChildListener"}) */
class Child
{
  /** @var User */
  private $parent;

  public function getParent() {return $this->parent; }
}
还有听众本身

class ChildListener
{

  public function postUpdate(Child $child, LifecycleEventArgs $event)
  {
      $child->getParent()->updateTimestamp();
  }
}

在原地踏步回答之后,再看看这一个:,这里解释了另一个解决方案。