public function setUp() { static::$kernel = static::createKernel(); static::$kernel->boot(); $this->application = new Application(static::$kernel); // drop the database $command = new DropDatabaseDoctrineCommand(); $this->application->add($command); $input = new ArrayInput(array('command' => 'doctrine:database:drop', '--force' => true)); $command->run($input, new NullOutput()); // we have to close the connection after dropping the database so we don't get "No database selected" error $connection = $this->application->getKernel()->getContainer()->get('doctrine')->getConnection(); if ($connection->isConnected()) { $connection->close(); } // create the database $command = new CreateDatabaseDoctrineCommand(); $this->application->add($command); $input = new ArrayInput(array('command' => 'doctrine:database:create')); $command->run($input, new NullOutput()); // create schema $command = new CreateSchemaDoctrineCommand(); $this->application->add($command); $input = new ArrayInput(array('command' => 'doctrine:schema:create')); $command->run($input, new NullOutput()); // get the Entity Manager $this->em = static::$kernel->getContainer()->get('doctrine')->getManager(); // load fixtures $client = static::createClient(); $loader = new \Symfony\Bridge\Doctrine\DataFixtures\ContainerAwareLoader($client->getContainer()); $loader->loadFromDirectory(static::$kernel->locateResource('@ErlemJobeetBundle/DataFixtures/ORM')); $purger = new \Doctrine\Common\DataFixtures\Purger\ORMPurger($this->em); $executor = new \Doctrine\Common\DataFixtures\Executor\ORMExecutor($this->em, $purger); $executor->execute($loader->getFixtures()); }
/** * {@inheritDoc} */ public static function setUpBeforeClass() { self::bootKernel(); $container = static::$kernel->getContainer(); $em = $container->get('doctrine')->getManager(); $loader = new \Symfony\Bridge\Doctrine\DataFixtures\ContainerAwareLoader($container); $loader->loadFromDirectory(__DIR__ . '/../../DataFixtures/ORM'); $purger = new \Doctrine\Common\DataFixtures\Purger\ORMPurger($em); $executor = new \Doctrine\Common\DataFixtures\Executor\ORMExecutor($em, $purger); $executor->execute($loader->getFixtures()); }
/** * load Fixture. * * @param array $fixtures optional fixtures location if not set will load all fixtures * example: * array( * "@ExtdevelopmentJobExamBundle/DataFixtures/ORM/LoadCustomerData", * "@ExtdevelopmentJobExamBundle/DataFixtures/ORM/LoadProductData", * ) */ public function loadFixture(array $fixtures = array()) { if (empty($fixtures)) { // load fixture $command = new LoadDataFixturesDoctrineCommand(); $this->application->add($command); $input = new ArrayInput(array('command' => 'doctrine:fixtures:load --append')); $input->setInteractive(false); $command->run($input, new NullOutput()); return; } // load fixtures specified location $loader = new \Symfony\Bridge\Doctrine\DataFixtures\ContainerAwareLoader(static::$kernel->getContainer()); foreach ($fixtures as $oneFixture) { $loader->loadFromFile(static::$kernel->locateResource($oneFixture . '.php')); } $purger = new \Doctrine\Common\DataFixtures\Purger\ORMPurger($this->em); $executor = new \Doctrine\Common\DataFixtures\Executor\ORMExecutor($this->em, $purger); $executor->execute($loader->getFixtures()); }