From: Vladimir Fomichev Date: Fri, 3 Oct 2025 14:19:25 +0000 (+0300) Subject: миграция X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=ef1e872cfbd4694822495117e5cac74704a31d6a;p=erp24_rep%2Fyii-erp24%2F.git миграция --- diff --git a/erp24/migrations/m251003_120000_add_order_column_to_matrix_erp_media.php b/erp24/migrations/m251003_120000_add_order_column_to_matrix_erp_media.php new file mode 100644 index 00000000..088042cf --- /dev/null +++ b/erp24/migrations/m251003_120000_add_order_column_to_matrix_erp_media.php @@ -0,0 +1,50 @@ +db->getTableSchema(self::TABLE_NAME); + + if (isset($tableSchema)) { + $this->addColumn(self::TABLE_NAME, 'foto_order', $this->integer()->defaultValue(1)->after('updated_at')); + + // Заполняем поле order существующими данными по порядку id для каждого guid + // Используем оконную функцию PostgreSQL + $this->execute(" + UPDATE " . self::TABLE_NAME . " + SET foto_order = sub.row_number + FROM ( + SELECT id, + ROW_NUMBER() OVER (PARTITION BY guid ORDER BY id) as row_number + FROM " . self::TABLE_NAME . " + ) sub + WHERE " . self::TABLE_NAME . ".id = sub.id + "); + } + } + + /** + * {@inheritdoc} + */ + public function safeDown() + { + $tableSchema = $this->db->getTableSchema(self::TABLE_NAME); + if (isset($tableSchema) && isset($tableSchema->columns['foto_order'])) { + $this->dropColumn(self::TABLE_NAME, 'foto_order'); + } + } +}