_loadedFixtures[] = $fixture['model']; $em = $this->sharedFixture['em']; $classMetadata = $em->getClassMetadata($fixture['model']); $tableName = $classMetadata->getTableName(); if ( ! in_array($tableName, self::$_exportedTables)) { $em->getConnection()->getSchemaManager()->exportClasses(array($fixture['model'])); self::$_exportedTables[] = $tableName; } foreach ($fixture['rows'] as $row) { $em->getConnection()->insert($tableName, $row); } } /** * Loads multiple fixtures of the same package and scenario. * This method must only be called from within the setUp() method of testcases. * The database will then be populated with fresh data of all loaded fixtures for each * test method. * * WARNING: A single testcase should never load fixtures from different scenarios of * the same package as the concistency and uniqueness of keys is not guaranteed. * * @param string $package The package name. Must be one of Doctrine's test model packages * (forum, cms or ecommerce). * @param string $scenario The fixture scenario. A model package can have many fixture * scenarios. Within a scenario all primary keys and foreign keys * of fixtures are consistent and unique. * @param array $names The names of the fixtures to load from the specified package. */ protected function loadFixtures($package, $scenario, array $names) { foreach ($names as $name) { $this->loadFixture($package, $scenario, $name); } } /** * Sweeps the database tables of all used fixtures. */ protected function tearDown() { $em = $this->sharedFixture['em']; foreach (array_reverse($this->_loadedFixtures) as $model) { $conn->exec("DELETE FROM " . $em->getClassMetadata($model)->getTableName()); } } }