Какова наиболее оптимизированная стратегия сохранения / сброса, когда несколько объектов необходимо очищать дважды?

Позвольте быть сущностью: Статья, с одним атрибутом: заглавие. Нам нужно вставить в базу данных через 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 раз.

Если мы удалим «сброс, которого можно избежать» и раскомментируем сброс, написанный после нескольких вызовов функции, мы будем сохраняются 2 * N раз а также смывать N + 1 раз, это улучшение. (Это будет работать, потому что два разные сохраненные объекты не перекрываются)

Мне интересно, есть ли более оптимизированный способ рассказать доктрине, что делать, например сохраняется 2 * N раз а также промывка 2 раза (один раз для всех заголовков и один раз для всех переведенных заголовков). Что вы думаете об этом?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]