使用Doctrine将持久对象添加到另一个对象

时间:2013-02-16 01:02:52

标签: php orm doctrine associations persist

我猜我完全不了解Doctrine,但这就是我正在做的事情:

我有一个创建帐户表单,用户输入典型内容(用户,通行证,电子邮件),我正在获取数据并首先创建一个电子邮件对象并将其保存到我的数据库中:

//  Create a new email object.
$email = new Entities\EmailAddress();
$email->setEmailAddress($emailAddress);

//  Persist the new email object.
$this->doctrine->em->persist($email);

然后我正在创建一个用户对象并将其持久保存到数据库中:

//  Create a new user object.
$user = new Entities\User();
$user->setUsername($username);
$user->setPassword($password);
$user->setSecurityLevel(0);
$user->getEmailAddresses()->add($email);

//  Persist the new user object.
$this->doctrine->em->persist($user);

麻烦始于$user->getEmailAddresses()->add($email);行(我试图效仿一个例子,但我担心我不能正确地做到这一点)。

电子邮件在我的User.php文件中定义为:

/**
 * @ORM\OneToMany(targetEntity="EmailAddress", mappedBy="user")
 */
private $emails;

如何将最近保留的电子邮件对象添加到我的$emails类的一对多关系User.php变量中,并将用户持久保存到数据库中?

1 个答案:

答案 0 :(得分:0)

你很亲密,但忘了:

  

$用户> getEmailAddresses() - >添加($电子邮件);

并将其替换为

$user->addEmails($email);

$user->setEmails($email);

取决于映射