getEnvironment() == "thetool") { $table = $this->table('WarehouseShippingNote'); $table ->addColumn('shippingNoteNumber', 'string', ['limit' => 20, 'null' => true, 'after' => 'id']) ->addIndex(['shippingNoteNumber'], ['unique' => true]) ->update(); // Get all shipping notes ordered by create timestamp to assign numbers in chronological order $rows = $this->fetchAll( "SELECT id, YEAR(FROM_UNIXTIME(`create`)) as year FROM WarehouseShippingNote ORDER BY `create` ASC, id ASC" ); // Group by year and assign sequential numbers $yearCounters = []; foreach ($rows as $row) { $year = $row['year']; if (!isset($yearCounters[$year])) { $yearCounters[$year] = 0; } $yearCounters[$year]++; $shippingNoteNumber = 'LS' . $year . '-X' . str_pad((string)$yearCounters[$year], 4, '0', STR_PAD_LEFT); $this->execute( "UPDATE WarehouseShippingNote SET shippingNoteNumber = '{$shippingNoteNumber}' WHERE id = {$row['id']}" ); } } } public function down(): void { if ($this->getEnvironment() == "thetool") { $table = $this->table('WarehouseShippingNote'); $table->removeColumn('shippingNoteNumber')->update(); } } }