Commit 37cec1d6 authored by Jonathan.Wage's avatar Jonathan.Wage

-

parent 50ab1867
...@@ -48,13 +48,13 @@ class Doctrine_Export_Schema ...@@ -48,13 +48,13 @@ 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');
...@@ -67,28 +67,6 @@ class Doctrine_Export_Schema ...@@ -67,28 +67,6 @@ class Doctrine_Export_Schema
if (!empty($models) && !in_array($name, $models)) { if (!empty($models) && !in_array($name, $models)) {
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();
......
...@@ -173,7 +173,11 @@ class Doctrine_Facade ...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment