【问题标题】:Doctrine Migrations in SymfonySymfony 中的教义迁移
【发布时间】:2018-04-01 09:29:16
【问题描述】:

我需要这样做:

  1. 加载夹具(将 10 记录添加到名称为“test0”-“test9”的表中)。
  2. 加载迁移并创建循环以查找此记录,然后将它们重命名为'category0'-'category9'。
  3. 如果之前找到'changetest0' - 然后跳过,如果没有找到 - 然后创建。

我的代码(我认为它不正确):

$em = $this->container->get('doctrine.orm.entity_manager');
        for ($i = 0; $i < 10; $i++) {
            $name = 'test' . $i;
            $category = $em->getRepository(Category::class)->findByName($name);
            if (isset($category) && $category == '') {
                $category->setName('category' . $i);
                $em->persist($category);
                $em->flush();
            } elseif ($em->getRepository(Category::class)->findByName('category' . $i)->getName() == 'category' . $i) {
                return;
            } else {
                $category->setName('category' . $i);
                $em->flush();
            }
        }

任何想法,如何正确地做到这一点?

【问题讨论】:

  • Load fixtures (add 10 records.... 你在哪里添加这个?

标签: php mysql entity-framework symfony doctrine


【解决方案1】:

我认为你错过了这个:

您不要将EntityManager 用作service。使用$this-&gt;getDoctrine()-&gt;getManager();;

$em = $this->getDoctrine()->getManager();
for ($i = 0; $i < 10; $i++) {
    $name = 'test' . $i;
    $category = $em->getRepository(Category::class)->findByName($name);
    if($category instanceof Category && !is_null($category)){
        $category->setName('category' . $i);
        $em->persist($category);
        $em->flush();
    }
    //After if else you have to set `$category` to `null`
    $category = null;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 2021-08-30
    相关资源
    最近更新 更多