From ef1e872cfbd4694822495117e5cac74704a31d6a Mon Sep 17 00:00:00 2001 From: Vladimir Fomichev Date: Fri, 3 Oct 2025 17:19:25 +0300 Subject: [PATCH] =?utf8?q?=D0=BC=D0=B8=D0=B3=D1=80=D0=B0=D1=86=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- ...0_add_order_column_to_matrix_erp_media.php | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 erp24/migrations/m251003_120000_add_order_column_to_matrix_erp_media.php 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'); + } + } +} -- 2.39.5