我有一个包含许多日记条目的用户对象。
用户类包含$ 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);
,是否有办法执行此操作?