OneToMany上的Doctrine级联不设置父对象?

时间:2013-11-08 18:23:53

标签: php doctrine-orm doctrine one-to-many

我有一个包含许多日记条目的用户对象。

用户类包含$ userJournals属性和所需的添加/删除功能,如下所示:

class User{
   ....
   /**
   * @var \Doctrine\Common\Collections\ArrayCollection
   *
   * @ORM\OneToMany(targetEntity="models\UserJournal", mappedBy="user", cascade={"persist"})
   */
   protected $userJournals;
   ....

   public function addUserJournal(\models\UserJournal $userJournal)
   {
          $this->userJournals->add($userJournal);
          return $this;
   }
 }

UserJournal类包含User对象,以及它的getter / setter。 $ user的注释在这里:

   class UserJournal
   {
   /**
   * @var models\User
   *
   * @ORM\ManyToOne(targetEntity="models\User", inversedBy="userJournals", cascade={"persist"})
   * @ORM\JoinColumns({
   *   @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
   * })
   */
   protected $user;
}

我的理解是级联持久化使得我不必在UserJournal上设置用户,我只需将UserJournal添加到用户,保存用户,它就可以工作。

    $user = $this->getRepository('User')->find(1);

    $userJournal = new models\UserJournal();
    $userJournal->setText('testCode');
    $user->addUserJournal($userJournal);
    $em->persist($user);
    $em->flush();

但是,此代码会产生一个SQL错误,即User_id上的user_id不能为null。

如果没有在此代码或addUserJournal()函数中执行$userJournal->setUser($user);,是否有办法执行此操作?

0 个答案:

没有答案
相关问题