db
db copied to clipboard
Table foreign keys load two times as arrays and as objects
Current implementation loads table foreign keys two times as arrays and as objects.
PostgreSQL https://github.com/yiisoft/db-pgsql/tree/535975396d865da6cb15ed7bee5648c27a9b7360/src/Schema.php#L499 as arrays https://github.com/yiisoft/db-pgsql/tree/535975396d865da6cb15ed7bee5648c27a9b7360/src/Schema.php#L894 as objects
MySQL https://github.com/yiisoft/db-mysql/blob/4dd4e13502a0f047627c398854fc733a41054370/src/Schema.php#L265 as arrays https://github.com/yiisoft/db-mysql/blob/4dd4e13502a0f047627c398854fc733a41054370/src/Schema.php#L618 as objects
SQLite https://github.com/yiisoft/db-sqlite/blob/b172ec9c11f31a5618a80e8cc6e3b298f423eb26/src/Schema.php#L381 as arrays https://github.com/yiisoft/db-sqlite/blob/b172ec9c11f31a5618a80e8cc6e3b298f423eb26/src/Schema.php#L201 as objects
Should they be loaded once?
| Q | A |
|---|---|
| Version | 1.1.0 |
| PHP version | any |
| Operating system | any |
Perhaps the solution could be use AbstractSchema::getTableMetadata() into Schema::findConstraints() of each DB specific package?
Yes, it looks like this. And use ForeignKeyConstraint[] instead of associative arrays.
@darkdef @terabytesoftw What do you think?
Perhaps the solution could be use
AbstractSchema::getTableMetadata()intoSchema::findConstraints()of each DB specific package?
Or AbstractSchema::getTableForeignKeys()
Suggestion to use one way to get foreign keys Schema::getTableForeignKeys() and do not store them in TableSchemaInterface as for indexes
Fixed