DDC-929 - Fix bug with DatabaseDriver not detecting indexes that are not called primary.
This commit is contained in:
parent
7a40e3f6f2
commit
8658376713
@ -22,6 +22,7 @@ namespace Doctrine\ORM\Mapping\Driver;
|
|||||||
use Doctrine\Common\Cache\ArrayCache,
|
use Doctrine\Common\Cache\ArrayCache,
|
||||||
Doctrine\Common\Annotations\AnnotationReader,
|
Doctrine\Common\Annotations\AnnotationReader,
|
||||||
Doctrine\DBAL\Schema\AbstractSchemaManager,
|
Doctrine\DBAL\Schema\AbstractSchemaManager,
|
||||||
|
Doctrine\DBAL\Schema\SchemaException,
|
||||||
Doctrine\ORM\Mapping\ClassMetadataInfo,
|
Doctrine\ORM\Mapping\ClassMetadataInfo,
|
||||||
Doctrine\ORM\Mapping\MappingException,
|
Doctrine\ORM\Mapping\MappingException,
|
||||||
Doctrine\Common\Util\Inflector;
|
Doctrine\Common\Util\Inflector;
|
||||||
@ -128,6 +129,11 @@ class DatabaseDriver implements Driver
|
|||||||
|
|
||||||
$columns = $this->tables[$tableName]->getColumns();
|
$columns = $this->tables[$tableName]->getColumns();
|
||||||
$indexes = $this->tables[$tableName]->getIndexes();
|
$indexes = $this->tables[$tableName]->getIndexes();
|
||||||
|
try {
|
||||||
|
$primaryKeyColumns = $this->tables[$tableName]->getPrimaryKey()->getColumns();
|
||||||
|
} catch(SchemaException $e) {
|
||||||
|
$primaryKeyColumns = array();
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->_sm->getDatabasePlatform()->supportsForeignKeyConstraints()) {
|
if ($this->_sm->getDatabasePlatform()->supportsForeignKeyConstraints()) {
|
||||||
$foreignKeys = $this->tables[$tableName]->getForeignKeys();
|
$foreignKeys = $this->tables[$tableName]->getForeignKeys();
|
||||||
@ -144,7 +150,7 @@ class DatabaseDriver implements Driver
|
|||||||
$fieldMappings = array();
|
$fieldMappings = array();
|
||||||
foreach ($columns as $column) {
|
foreach ($columns as $column) {
|
||||||
$fieldMapping = array();
|
$fieldMapping = array();
|
||||||
if (isset($indexes['primary']) && in_array($column->getName(), $indexes['primary']->getColumns())) {
|
if ($primaryKeyColumns && in_array($column->getName(), $primaryKeyColumns)) {
|
||||||
$fieldMapping['id'] = true;
|
$fieldMapping['id'] = true;
|
||||||
} else if (in_array($column->getName(), $allForeignKeyColumns)) {
|
} else if (in_array($column->getName(), $allForeignKeyColumns)) {
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
Reference in New Issue
Block a user