让我们成为一个实体:文章,其中包含一个属性:标题。我们需要通过Doctrine ORM将一系列 标题 和 翻译标题 插入数据库。
PS:翻译的标题将由可翻译的标题传播到第二个表格中。我们不需要了解有关此扩展程序的更多信息。我们只需要知道一个对象必须刷新两次(或在两个不同的时刻)才能正确插入数据库。
因此,我们想告诉学说插入数据库N标题及其翻译:
$this->createAndPersistArticle("1-some title in english", "1-un titre en français")
$this->createAndPersistArticle("2-another funny title", "2-un drôle de titre")
...
$this->createAndPersistArticle("N-last but not least", "N-le dernier mais pas des moindres")
//$this->getManager()->flush();
使用此功能:
private function createAndPersistArticle($title, $translatedTitle) {
$anArticle = new Article();
$anArticle->setTitle($title);
$this->getManager()->persist($anArticle);
$this->getManager()->flush();
$anArticle->setTranslatableLocale('fr');
$anArticle->setTitle($translatedTitle);
$this->getManager()->persist($anArticle);
$this->getManager()->flush(); // flush that can be avoided
}
使用此代码,我们持续2 * N次和刷新2 * N次。
如果我们删除了可以避免的" flush"并且在多次调用函数后取消注释刷新,我们持续2 * N次和刷新N + 1次,这是一个改进。 (它会起作用,因为两个不同的持久对象不会重叠)
我想知道是否有更优化的方式告诉学说要做什么,例如持续2 * N次和刷新2次(所有游戏一次)和一次所有翻译的标题)。你对此有何看法?