首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >固定装置+移动原理,Symfony

固定装置+移动原理,Symfony
EN

Stack Overflow用户
提问于 2018-03-27 17:27:10
回答 1查看 489关注 0票数 0

我想要创建一个夹具,它在我的表中生成10个记录(test0-test9),然后创建迁移,其中我需要重命名记录,这是由夹具创建的(类别0-类别9)。我已经创建了这个装置:

代码语言:javascript
运行
复制
class AppFixtures extends Fixture
{
    public function load(ObjectManager $manager)
       {
        for ($i = 0; $i < 10; $i++)
        {
            $product = new Category();
            $product->setName('test '.$i);
            $id = mt_rand(89,140);
            $parent = $manager->getRepository(Category::class)->find($id);
            $product->setParent($parent);
            $manager->persist($product);
        }

        $manager->flush();
    }
}

但是,我怎样才能用迁移来重命名这些记录呢?我想,我需要在迁移class...or中直接创建sql查询,而不是

更新

我试着这么做,但我觉得这不是个好办法.

代码语言:javascript
运行
复制
public function postUp(Schema $schema)
    {
        $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');

        for ($i = 0; $i < 10; $i++)
        {
            $category = 'category '.$i;
            $test = 'test'.$i;
            $this->addSql('UPDATE category SET NAME = '.$category.' WHERE NAME = '.$test );
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2018-03-27 18:31:01

您可以在迁移中插入实体管理器。然后,您可以找到要更改的对象并对其进行更改。我希望这能回答你的问题

示例:

代码语言:javascript
运行
复制
public function postUp(Schema $schema)
    {
        $em = $this->container->get('doctrine.orm.entity_manager');
        $products = $em->getRepository(Product::class)
               ->getProductsCustomQuery();

    foreach($product as $products){
        $product->setName(Whatever);                                                                       
    }
    $em->flush(); 
    }

检查这个链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49519036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档