Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
doctrine-dbal
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tomáš Trávníček
doctrine-dbal
Commits
e5c2695d
Commit
e5c2695d
authored
May 20, 2017
by
Eugene Pisarchik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactored getColumns method
parent
87251a14
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
49 additions
and
31 deletions
+49
-31
MySqlPlatform.php
lib/Doctrine/DBAL/Platforms/MySqlPlatform.php
+1
-1
Table.php
lib/Doctrine/DBAL/Schema/Table.php
+48
-30
No files found.
lib/Doctrine/DBAL/Platforms/MySqlPlatform.php
View file @
e5c2695d
...
@@ -742,7 +742,7 @@ class MySqlPlatform extends AbstractPlatform
...
@@ -742,7 +742,7 @@ class MySqlPlatform extends AbstractPlatform
foreach
(
$diff
->
changedIndexes
as
$changedIndex
)
{
foreach
(
$diff
->
changedIndexes
as
$changedIndex
)
{
// Changed primary key
// Changed primary key
if
(
$changedIndex
->
isPrimary
()
&&
$diff
->
fromTable
instanceof
Table
)
{
if
(
$changedIndex
->
isPrimary
()
&&
$diff
->
fromTable
instanceof
Table
)
{
foreach
(
$diff
->
fromTable
->
getPrimaryKeyColumns
()
as
$columnName
)
{
foreach
(
$diff
->
fromTable
->
getPrimaryKeyColumn
Name
s
()
as
$columnName
)
{
$column
=
$diff
->
fromTable
->
getColumn
(
$columnName
);
$column
=
$diff
->
fromTable
->
getColumn
(
$columnName
);
// Check if an autoincrement column was dropped from the primary key.
// Check if an autoincrement column was dropped from the primary key.
...
...
lib/Doctrine/DBAL/Schema/Table.php
View file @
e5c2695d
...
@@ -616,29 +616,63 @@ class Table extends AbstractAsset
...
@@ -616,29 +616,63 @@ class Table extends AbstractAsset
}
}
/**
/**
* Returns ordered list of columns (primary keys are first, then foreign keys, then the rest)
* @return Column[]
* @return Column[]
*/
*/
public
function
getColumns
()
public
function
getColumns
()
{
{
$columns
=
$this
->
_columns
;
return
array_merge
(
$this
->
getPrimaryKeyColumns
(),
$this
->
getForeignKeyColumns
(),
$this
->
_columns
);
}
$pkCols
=
array
();
/**
$fkCols
=
array
();
* Returns primary key columns
* @return Column[]
*/
public
function
getPrimaryKeyColumns
()
{
$primaryKeyColumnNames
=
$this
->
getPrimaryKeyColumnNames
();
return
array_filter
(
$this
->
_columns
,
function
(
$key
)
use
(
$primaryKeyColumnNames
)
{
return
in_array
(
$key
,
$primaryKeyColumnNames
);
},
ARRAY_FILTER_USE_KEY
);
}
/**
* Returns foreign key columns
* @return Column[]
*/
public
function
getForeignKeyColumns
()
{
$foreignKeyColumnNames
=
$this
->
getForeignKeyColumnNames
();
return
array_filter
(
$this
->
_columns
,
function
(
$key
)
use
(
$foreignKeyColumnNames
)
{
return
in_array
(
$key
,
$foreignKeyColumnNames
);
},
ARRAY_FILTER_USE_KEY
);
}
/**
* Returns primary key column names
* @return array
*/
public
function
getPrimaryKeyColumnNames
()
{
$primaryKeyColumnNames
=
[];
if
(
$this
->
hasPrimaryKey
())
{
if
(
$this
->
hasPrimaryKey
())
{
$p
kCol
s
=
$this
->
getPrimaryKey
()
->
getColumns
();
$p
rimaryKeyColumnName
s
=
$this
->
getPrimaryKey
()
->
getColumns
();
}
}
foreach
(
$this
->
getForeignKeys
()
as
$fk
)
{
return
$primaryKeyColumnNames
;
/* @var $fk ForeignKeyConstraint */
}
$fkCols
=
array_merge
(
$fkCols
,
$fk
->
getColumns
());
}
$colNames
=
array_unique
(
array_merge
(
$pkCols
,
$fkCols
,
array_keys
(
$columns
)));
uksort
(
$columns
,
function
(
$a
,
$b
)
use
(
$colNames
)
{
return
(
array_search
(
$a
,
$colNames
)
>=
array_search
(
$b
,
$colNames
));
});
return
$columns
;
/**
* Returns foreign key column names
* @return array
*/
public
function
getForeignKeyColumnNames
()
{
$foreignKeyColumnNames
=
[];
foreach
(
$this
->
getForeignKeys
()
as
$foreignKey
)
{
/* @var $foreignKey ForeignKeyConstraint */
$foreignKeyColumnNames
=
array_merge
(
$foreignKeyColumnNames
,
$foreignKey
->
getColumns
());
}
return
$foreignKeyColumnNames
;
}
}
/**
/**
...
@@ -688,22 +722,6 @@ class Table extends AbstractAsset
...
@@ -688,22 +722,6 @@ class Table extends AbstractAsset
return
$this
->
getIndex
(
$this
->
_primaryKeyName
);
return
$this
->
getIndex
(
$this
->
_primaryKeyName
);
}
}
/**
* Returns the primary key columns.
*
* @return array
*
* @throws DBALException
*/
public
function
getPrimaryKeyColumns
()
{
if
(
!
$this
->
hasPrimaryKey
())
{
throw
new
DBALException
(
"Table "
.
$this
->
getName
()
.
" has no primary key."
);
}
return
$this
->
getPrimaryKey
()
->
getColumns
();
}
/**
/**
* Returns whether this table has a primary key.
* Returns whether this table has a primary key.
*
*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment