tableExists($tableFrom) && $setup->tableExists($tableTo)) { $connection = $setup->getConnection(); $tableFrom = $setup->getTable($tableFrom); $tableTo = $setup->getTable($tableTo); $fields = []; foreach ($connection->describeTable($tableFrom) as $columnName => $columnConfig) { $columnName = strtolower($columnName); $alias = $mapFields[$columnName] ?? $columnName; $fields[$alias] = $columnName; } $sourceFields = array_keys($fields); $targetFields = array_map('strtolower', array_keys($connection->describeTable($tableTo))); if (array_diff($sourceFields, $targetFields)) { throw new \RuntimeException('Invalid data source to migrate.'); } $select = $connection->select()->from($tableFrom, $fields); $connection->query( $connection->insertFromSelect($select, $tableTo, $sourceFields) ); } } }