New fix for the check for duplicates between explicitly declared custom relations and autogenerated relations.
This commit is contained in:
parent
53eb2ea087
commit
ff7aac8b30
@ -210,7 +210,24 @@ class Doctrine_Import_Schema
|
|||||||
*/
|
*/
|
||||||
public function getRelations($properties)
|
public function getRelations($properties)
|
||||||
{
|
{
|
||||||
return isset($this->_relations[$properties['className']]) ? $this->_relations[$properties['className']]:array();
|
$all_relations = isset($this->_relations[$properties['className']]) ? $this->_relations[$properties['className']]:array();
|
||||||
|
|
||||||
|
// This is for checking for duplicates between alias-relations and a auto-generated relations to ensure the result set of unique relations
|
||||||
|
$exist_relations = array();
|
||||||
|
$unique_relations = array();
|
||||||
|
foreach ($all_relations as $relation) {
|
||||||
|
if (!in_array($relation['class'], $exist_relations)) {
|
||||||
|
$exist_relations[] = $relation['class'];
|
||||||
|
$unique_relations = array_merge($unique_relations, array($relation['alias'] => $relation));
|
||||||
|
} else {
|
||||||
|
// check to see if this relationship is not autogenerated, if it's not, then the user must have explicitly declared it
|
||||||
|
if (!isset($relation['autogenerated']) || $relation['autogenerated'] != true) {
|
||||||
|
$unique_relations = array_merge($unique_relations, array($relation['alias'] => $relation));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $unique_relations;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -421,6 +438,10 @@ class Doctrine_Import_Schema
|
|||||||
$newRelation['class'] = isset($relation['foreignClass']) ? $relation['foreignClass']:$className;
|
$newRelation['class'] = isset($relation['foreignClass']) ? $relation['foreignClass']:$className;
|
||||||
$newRelation['alias'] = isset($relation['foreignAlias']) ? $relation['foreignAlias']:$className;
|
$newRelation['alias'] = isset($relation['foreignAlias']) ? $relation['foreignAlias']:$className;
|
||||||
|
|
||||||
|
// this is so that we know that this relation was autogenerated and
|
||||||
|
// that we do not need to include it if it is explicitly declared in the schema by the users.
|
||||||
|
$newRelation['autogenerated'] = true;
|
||||||
|
|
||||||
if (isset($relation['refClass'])) {
|
if (isset($relation['refClass'])) {
|
||||||
$newRelation['refClass'] = $relation['refClass'];
|
$newRelation['refClass'] = $relation['refClass'];
|
||||||
$newRelation['type'] = isset($relation['foreignType']) ? $relation['foreignType']:$relation['type'];
|
$newRelation['type'] = isset($relation['foreignType']) ? $relation['foreignType']:$relation['type'];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user