从DB生成Symfony2灯具?

Stu*_*uck 32 fixtures symfony doctrine-orm

是否可以从Symfony2/Doctrine中的现有数据库生成灯具?我怎么能这样做?

例:

我已经定义了15个实体,我的symfony2应用程序正在运行.现在有些人可以浏览到该应用程序,并且使用它已经插入了大约5000行,直到现在.现在我希望插入的东西作为固定装置,但我不想手工完成.如何从数据库生成它们?

Lus*_*ian 8

在Doctrine或Symfony2中没有直接的方式,但为它编写代码生成器(在sf2内部或外部)将是微不足道的.只需拉动每个属性并生成一行代码来设置每个属性,然后将其放入fixture装入方法中.例:

<?php
$i = 0;
$entities = $em->getRepository('MyApp:Entity')->findAll();
foreach($entities as $entity)
{
   $code .= "$entity_{$i} = new MyApp\Entity();\n";
   $code .= "$entity_{$i}->setMyProperty('" . addslashes($entity->getMyProperty()); . "'); \n");
   $code .= "$manager->persist($entity_{$i}); \n $manager->flush();";
   ++$i;
}
// store code somewhere with file_put_contents
Run Code Online (Sandbox Code Playgroud)

  • 在您实际拥有任何相关实体之前,这听起来微不足道.另外,在每一个之后做一次冲洗都是浪费. (9认同)

Reu*_*ven -3

在doctrine_fixture 说明书中,您可以在最后一个示例中看到如何在实体中获取服务容器。

使用此服务容器,您可以检索学说服务,然后检索实体管理器。使用实体管理器,您将能够从数据库中获取所需的所有数据。

希望对你有帮助!