1
0
mirror of synced 2024-12-15 07:36:03 +03:00
This commit is contained in:
Jonathan.Wage 2007-10-16 05:39:49 +00:00
parent 50ab186792
commit 37cec1d690
2 changed files with 7 additions and 25 deletions

View File

@ -48,14 +48,14 @@ class Doctrine_Export_Schema
*/ */
public function buildSchema($directory = null, $models = array()) public function buildSchema($directory = null, $models = array())
{ {
$array = array();
if ($directory) { if ($directory) {
$loadedModels = Doctrine::loadModels($directory); $loadedModels = Doctrine::loadModels($directory);
} else { } else {
$loadedModels = Doctrine::getLoadedModels(); $loadedModels = Doctrine::getLoadedModels();
} }
$array = array();
$parent = new ReflectionClass('Doctrine_Record'); $parent = new ReflectionClass('Doctrine_Record');
$sql = array(); $sql = array();
@ -68,28 +68,6 @@ class Doctrine_Export_Schema
continue; continue;
} }
$class = new ReflectionClass($name);
// check if class is an instance of Doctrine_Record and not abstract
// class must have method setTableDefinition (to avoid non-Record subclasses like symfony's sfDoctrineRecord)
// we have to recursively iterate through the class parents just to be sure that the classes using for example
// column aggregation inheritance are properly exported to database
while ($class->isAbstract() ||
! $class->isSubclassOf($parent) ||
! $class->hasMethod('setTableDefinition') ||
( $class->hasMethod('setTableDefinition') &&
$class->getMethod('setTableDefinition')->getDeclaringClass()->getName() !== $class->getName())) {
$class = $class->getParentClass();
if ($class === false) {
break;
}
}
if ($class === false) {
continue;
}
$record = new $name(); $record = new $name();
$recordTable = $record->getTable(); $recordTable = $record->getTable();

View File

@ -173,7 +173,11 @@ class Doctrine_Facade
$export = new Doctrine_Export_Schema(); $export = new Doctrine_Export_Schema();
return $export->exportSchema($yamlPath, 'yml', $directory); $result = $export->exportSchema($yamlPath, 'yml', $directory);
exec('rm -rf ' . $directory);
return $result;
} }
/** /**
* generateModelsFromYaml * generateModelsFromYaml