Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从迁移类加载Symfony2装置?_Symfony_Doctrine Orm_Symfony 2.4_Doctrine Migrations - Fatal编程技术网

如何从迁移类加载Symfony2装置?

如何从迁移类加载Symfony2装置?,symfony,doctrine-orm,symfony-2.4,doctrine-migrations,Symfony,Doctrine Orm,Symfony 2.4,Doctrine Migrations,我们已经建立了一组数据装置,用所有的参考值为数据库种子。我们还使用管理模式更新。我们希望在初始模式迁移类中触发fixture加载,以便在运行任何其他模式更新之前填充系统 我在您可以制作的文档中找到了,但我不知道如何从该文档跳到调用/运行数据设备。我还没有在Stackoverflow或通过google找到任何好的答案。有人这样做过吗?能给我指出正确的方向吗?(或者对结合模式迁移管理种子数据的更好方法提出建议)。谢谢 这是使用Symfony版本:2.4这是一个有趣的问题。我找到了“肮脏”的解决方案,

我们已经建立了一组数据装置,用所有的参考值为数据库种子。我们还使用管理模式更新。我们希望在初始模式迁移类中触发fixture加载,以便在运行任何其他模式更新之前填充系统

我在您可以制作的文档中找到了,但我不知道如何从该文档跳到调用/运行数据设备。我还没有在Stackoverflow或通过google找到任何好的答案。有人这样做过吗?能给我指出正确的方向吗?(或者对结合模式迁移管理种子数据的更好方法提出建议)。谢谢


这是使用Symfony版本:2.4这是一个有趣的问题。我找到了“肮脏”的解决方案,但效果很好


namespace Application\Migrations;

use Doctrine\DBAL\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;

class Version20140811164659 extends AbstractMigration implements ContainerAwareInterface
{
    private $container;

    public function setContainer(ContainerInterface $container = null)
    {
        $this->container = $container;
    }

    public function up(Schema $schema)
    {
        // ... your code here
    }

    public function postUp(Schema $schema)
    {
        // here you have to define fixtures dir
        $this->loadFixtures('src/Acme/BlogBundle/DataFixtures/ORM');
    }

    public function down(Schema $schema)
    {
        // ... your code here
    }

    public function loadFixtures($dir, $append = true)
    {
        $kernel = $this->container->get('kernel');
        $application = new \Symfony\Bundle\FrameworkBundle\Console\Application($kernel);
        $application->setAutoExit(false);

        //Loading Fixtures
        $options = array('command' => 'doctrine:fixtures:load', "--fixtures" => $dir, "--append" => (boolean) $append);
        $application->run(new \Symfony\Component\Console\Input\ArrayInput($options));
    }
}
此解决方案只需在“向上”迁移后运行console命令
php应用程序/console原则:fixtures:load--fixtures=src/Acme/BlogBundle/DataFixtures/ORM--append

对不起,你英语不好。如果您能找到清晰的解决方案,请与他人分享;)

我制作了一个迁移类来解决这个问题。该代码基本上是从原则:fixtures:load命令中得到启发的