在 Doctrine Getting Started 教程中,有一个错误创建的示例。错误具有报告者和实体用户的工程师属性。
该示例让您传递现有记者和现有工程师的 id。该示例然后使用 id 在数据库中查找用户。
$reporter = $entityManager->find("User", $theReporterId);
$engineer = $entityManager->find("User", $theDefaultEngineerId);
后来,记者和工程师附在了这个bug上。
$bug->setReporter($reporter);
$bug->setEngineer($engineer);
由于我知道 id,我想我会很聪明并创建一个新用户,将 id 设置为传递的变量并在用户上调用persist。
$reporter = new User();
$reporter->setId($theReporterId);
$reporter->setName("Foo");
$entityManager->persist($reporter);
然后我继续使用新的用户对象调用 setReporter/Engineer,在 bug 上调用 persist,然后调用 flush。
但是,当这种情况发生时,会为记者和工程师创建一个新用户,并将数据库中的错误条目设置为新用户的新 id。
看起来 Doctrine 不知道新用户是基于现有实体的。有没有办法可以做我想做的事?我认为这将是绕过对数据库的点击以获取用户的好方法。