在prePersist中创建新实体并更改实体

时间:2018-10-25 08:41:58

标签: doctrine-orm

从某种意义上说,我想将我的旧问题Flushing in postPersist possible or not?转移到prePersist事件中。

假设以下示例

class Entity {

    /** @PrePersist */
    public function doStuffOnPrePersist(LifecycleEventArgs $args)
    {
        $this->value = 'changed from prePersist callback!';
        $other  = new OtherEntity();

        $args->getEntityManager()->persist($other);
    }
}

$entity = new Entity();
$entity->value = "unchanged";
$em->persist($entity);
$em->flush();

我有两个基本问题:

-写入db的value是“不变”还是“从...更改”?

-将OtherEntity写入数据库吗?

假设两个问题的回答都是肯定的,让我扩展我的问题:

EntityOtherEntity都有一个自动生成的ID字段,而OtherEntity拥有对Entity的引用(ManyToOne):

class Entity {
    /* 
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue
     */
    private $id;

    /** @PrePersist */
    public function doStuffOnPrePersist(LifecycleEventArgs $args)
    {
        $this->value = 'changed from prePersist callback!';
        $other  = new OtherEntity();
        $other->father = $this;    // <-------------
        $args->getEntityManager()->persist($other);
    }
}

这也行吗?

0 个答案:

没有答案