我的问题参考了Doctrine 多对多关系和 onFlush 事件
作者实体:http://pastebin.com/GBCaSA4Z书籍 实体:http ://pastebin.com/Xb2SEiaQ
我运行这段代码:
$book = new \App\CoreBundle\Entity\Books();
$book->setTtile('book title: '.uniqid());
$book->setIsbn('book isbn: '.uniqid());
$author = new \App\CoreBundle\Entity\Authors();
$author->setName('author title: '.uniqid());
$author->addBook($book);
$entityManager->persist($author);
$entityManager->flush();
这样就一切OK了。Doctrine 生成三个查询:create author、create book 和 create links at author_books。
但是我需要在学说onFlush事件中分离和序列化所有实体并将它们保存在 NoSQL 数据库中。然后其他脚本将反序列化所有这些实体并将它们保存到数据库中。并且通过这种方式,Doctrine 只生成了两个 SQL 查询:create book 和 create author。我应该怎么做学说也为链接表生成 SQL 查询?
这里是反序列化实体的部分脚本:
foreach ($serializedEntities as $serializedEntity)
{
$detachedEtity = unserialize($serializedEntity);
$entity = $entityManager->merge($detachedEtity);
//$entityManager->persist($entity)
}
$entityManager->flush();
更新:我总是得到这样的错误:
Notice: Undefined index: 000000002289c17b000000003937ebb0 in /app/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 2776