使用Doctrine Entity Manager创建新元素



我在脚本中使用Doctrine Entity Manager,选择和更新始终工作,因此Entity Manager可以正确初始化:

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

但是,当我尝试创建/保存新元素时,页面断开时,代码为:

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

它是在官方文档页面上创建的

我在这里做错了什么?

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

$item->setAuthorId(1);

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

$item->setAuthor($entityManager->find('ModelsAuthor', 1););

或更好的

$item->setAuthor($entityManager->getReference('ModelsAuthor', 1););

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

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

希望此帮助

相关内容

  • 没有找到相关文章

最新更新