使用doctrine实体管理器创建新元素?

时间:2016-12-19 14:42:05

标签: symfony doctrine-orm doctrine php-7

我在我的脚本中使用doctrine实体管理器,总是选择和更新工作,因此实体初始化正确:

$article = $entityManager->find('Models\Article', 5);
echo $article->getTitle();
or:
$article->setTitle('Updated!');

但是当我尝试创建/保存新元素然后分页时,代码为:

$item = new Article();
$item->setAuthorId(1);
$item->setTitle('Created item!');
$entityManager->persist($item);
$entityManager->flush();

它的创建方式与官方documentation page

相同

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

似乎您无法指定对象与Author实体的关系:

$item->setAuthorId(1);

可能是您的实体Article与实体Author有关系。在这种情况下,您应该有一个适当的setter方法(简单setAuthor(Author $author))来分配Author对象的引用。在这种情况下,您可以使用以下内容:

$item->setAuthor($entityManager->find('Models\Author', 1););

或更好

$item->setAuthor($entityManager->getReference('Models\Author', 1););

您还可以使用class关键字引用类对象的简短方法,例如:

$item->setAuthor($entityManager->getReference(Author::class, 1););

希望这个帮助