@@ -79,29 +79,49 @@ public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface
79
79
80
80
// Updating data of the 'catalog_product_bundle_selection_price' table.
81
81
$ tableName = $ setup ->getTable ('catalog_product_bundle_selection_price ' );
82
- $ oldTableName = $ setup ->getTable ('catalog_product_bundle_selection_price_old ' );
82
+ $ tmpTableName = $ setup ->getTable ('catalog_product_bundle_selection_price_tmp ' );
83
83
84
- $ setup ->getConnection ()->renameTable ($ tableName, $ oldTableName );
84
+ $ existingForeignKeys = $ setup ->getConnection ()->getForeignKeys ($ tableName );
85
85
86
- $ tableCopy = $ setup ->getConnection ()->createTableByDdl ($ oldTableName , $ tableName );
86
+ foreach ($ existingForeignKeys as $ key ) {
87
+ $ setup ->getConnection ()->dropForeignKey ($ key ['TABLE_NAME ' ], $ key ['FK_NAME ' ]);
88
+ }
89
+
90
+ $ setup ->getConnection ()->createTable (
91
+ $ setup ->getConnection ()->createTableByDdl ($ tableName , $ tmpTableName )
92
+ );
87
93
88
- foreach ($ setup ->getConnection ()->getForeignKeys ($ oldTableName ) as $ key ) {
89
- $ setup ->getConnection ()->dropForeignKey ($ oldTableName , $ key ['FK_NAME ' ]);
94
+ foreach ($ existingForeignKeys as $ key ) {
95
+ $ setup ->getConnection ()->addForeignKey (
96
+ $ key ['FK_NAME ' ],
97
+ $ key ['TABLE_NAME ' ],
98
+ $ key ['COLUMN_NAME ' ],
99
+ $ key ['REF_TABLE_NAME ' ],
100
+ $ key ['REF_COLUMN_NAME ' ],
101
+ $ key ['ON_DELETE ' ]
102
+ );
90
103
}
91
104
92
- $ setup ->getConnection ()->createTable ($ tableCopy );
105
+ $ setup ->getConnection ()->query (
106
+ $ setup ->getConnection ()->insertFromSelect (
107
+ $ setup ->getConnection ()->select ()->from ($ tableName ),
108
+ $ tmpTableName
109
+ )
110
+ );
111
+
112
+ $ setup ->getConnection ()->truncateTable ($ tableName );
93
113
94
114
$ columnsToSelect = [];
95
115
96
- foreach ($ setup ->getConnection ()->describeTable ($ oldTableName ) as $ column ) {
116
+ foreach ($ setup ->getConnection ()->describeTable ($ tmpTableName ) as $ column ) {
97
117
$ alias = $ column ['COLUMN_NAME ' ] == 'parent_product_id ' ? 'selections. ' : 'prices. ' ;
98
118
99
119
$ columnsToSelect [] = $ alias . $ column ['COLUMN_NAME ' ];
100
120
}
101
121
102
122
$ select = $ setup ->getConnection ()->select ()
103
123
->from (
104
- ['prices ' => $ oldTableName ],
124
+ ['prices ' => $ tmpTableName ],
105
125
[]
106
126
)->joinLeft (
107
127
['selections ' => $ setup ->getTable ('catalog_product_bundle_selection ' )],
@@ -113,7 +133,7 @@ public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface
113
133
$ setup ->getConnection ()->insertFromSelect ($ select , $ tableName )
114
134
);
115
135
116
- $ setup ->getConnection ()->dropTable ($ oldTableName );
136
+ $ setup ->getConnection ()->dropTable ($ tmpTableName );
117
137
}
118
138
119
139
$ setup ->endSetup ();
0 commit comments