1
0
mirror of synced 2024-12-14 15:16:04 +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,13 +48,13 @@ class Doctrine_Export_Schema
*/
public function buildSchema($directory = null, $models = array())
{
$array = array();
if ($directory) {
$loadedModels = Doctrine::loadModels($directory);
} else {
$loadedModels = Doctrine::getLoadedModels();
}
$array = array();
$parent = new ReflectionClass('Doctrine_Record');
@ -67,28 +67,6 @@ class Doctrine_Export_Schema
if (!empty($models) && !in_array($name, $models)) {
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();
$recordTable = $record->getTable();

View File

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