81 $entityTableInfo = $this->setup->getConnection()->describeTable(
82 $this->setup->getTable($this->entityTable)
84 if (!$entityTableInfo[$this->entityColumn][
'PRIMARY']) {
108 $foreignKeys = $this->setup->getConnection()->getForeignKeys(
109 $this->setup->getTable($targetTable)
111 $foreignKeys = array_filter(
113 function ($key) use ($targetColumn, $refTable, $refColumn) {
114 return $key[
'COLUMN_NAME'] == $targetColumn
115 && $key[
'REF_TABLE_NAME'] == $refTable;
136 $foreignKeys = $this->
getForeignKeys($targetTable, $targetColumn, $refTable, $refColumn);
137 foreach ($foreignKeys as $foreignKey) {
138 $this->setup->getConnection()->dropForeignKey(
139 $foreignKey[
'TABLE_NAME'],
140 $foreignKey[
'FK_NAME']
153 $this->externalTable,
154 $this->externalColumn,
158 $this->setup->getConnection()->addForeignKey(
159 $this->setup->getFkName(
160 $this->externalTable,
161 $this->externalColumn,
165 $this->setup->getTable($this->externalTable),
167 $this->setup->getTable($this->entityTable),
181 $foreignKeys = $this->setup->getConnection()->getForeignKeys(
182 $this->setup->getTable($this->entityTable)
184 $foreignKeys = array_filter(
190 foreach ($foreignKeys as $foreignKeyInfo) {
192 $this->externalTable,
193 $this->externalColumn,
194 $this->setup->getTablePlaceholder($foreignKeyInfo[
'REF_TABLE_NAME']),
195 $foreignKeyInfo[
'REF_COLUMN_NAME']
197 $this->setup->getConnection()->addForeignKey(
198 $this->setup->getFkName(
199 $this->externalTable,
200 $this->externalColumn,
201 $this->setup->getTablePlaceholder($foreignKeyInfo[
'REF_TABLE_NAME']),
202 $foreignKeyInfo[
'REF_COLUMN_NAME']
204 $this->setup->getTable($this->externalTable),
206 $foreignKeyInfo[
'REF_TABLE_NAME'],
207 $foreignKeyInfo[
'REF_COLUMN_NAME'],
222 $this->externalTable,
223 $this->externalColumn,
228 $this->externalTable,
229 $this->externalColumn,
install(SchemaSetupInterface $setup, $entityTable, $entityColumn, $externalTable, $externalColumn, $onDelete=AdapterInterface::FK_ACTION_CASCADE)
getForeignKeys( $targetTable, $targetColumn, $refTable, $refColumn)
clearForeignKey( $targetTable, $targetColumn, $refTable, $refColumn)