diff --git a/database/migrations/2025_07_17_210001_create_codice_univoco_triggers_alternative.php b/database/migrations/2025_07_17_210001_create_codice_univoco_triggers_alternative.php index 8a10504..2085b3d 100755 --- a/database/migrations/2025_07_17_210001_create_codice_univoco_triggers_alternative.php +++ b/database/migrations/2025_07_17_210001_create_codice_univoco_triggers_alternative.php @@ -56,10 +56,12 @@ public function up(): void // Aggiornare i record esistenti che non hanno codice_univoco try { // Per amministratori - $amministratori = DB::table('amministratori')->whereNull('codice_univoco')->orWhere('codice_univoco', '')->get(); - foreach ($amministratori as $admin) { - $codice = $this->generateCodiceUnivocoPhp('amministratori'); - DB::table('amministratori')->where('id', $admin->id)->update(['codice_univoco' => $codice]); + if (DB::getSchemaBuilder()->hasColumn('amministratori', 'codice_univoco')) { + $amministratori = DB::table('amministratori')->whereNull('codice_univoco')->orWhere('codice_univoco', '')->get(); + foreach ($amministratori as $admin) { + $codice = $this->generateCodiceUnivocoPhp('amministratori'); + DB::table('amministratori')->where('id', $admin->id)->update(['codice_univoco' => $codice]); + } } // Per users (se la colonna esiste) diff --git a/database/migrations/2025_07_22_103312_add_new_columns_to_unita_immobiliari_table.php b/database/migrations/2025_07_22_103312_add_new_columns_to_unita_immobiliari_table.php index d6d7e1d..3266f1d 100755 --- a/database/migrations/2025_07_22_103312_add_new_columns_to_unita_immobiliari_table.php +++ b/database/migrations/2025_07_22_103312_add_new_columns_to_unita_immobiliari_table.php @@ -253,6 +253,9 @@ public function up(): void $hasFk = false; if ($conn->getDriverName() === 'sqlite') { $hasFk = false; + } elseif ($conn->getDriverName() === 'pgsql') { + $exists = $conn->selectOne("SELECT COUNT(*) AS c FROM information_schema.table_constraints tc JOIN information_schema.key_column_usage kcu ON tc.constraint_name = kcu.constraint_name WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_name = 'unita_immobiliari' AND kcu.column_name = 'palazzina_id'"); + $hasFk = isset($exists->c) ? ((int) $exists->c > 0) : false; } else { $exists = $conn->selectOne("SELECT COUNT(*) AS c FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = ? AND TABLE_NAME = 'unita_immobiliari' AND COLUMN_NAME = 'palazzina_id' AND REFERENCED_TABLE_NAME IS NOT NULL", [$dbName]); $hasFk = isset($exists->c) ? ((int) $exists->c > 0) : false; @@ -270,6 +273,9 @@ public function up(): void if ($conn->getDriverName() === 'sqlite') { $indexes = collect($conn->select("PRAGMA index_list(unita_immobiliari)")); $hasIdx = $indexes->pluck('name')->contains('unita_immobiliari_codice_unita_unique'); + } elseif ($conn->getDriverName() === 'pgsql') { + $indexes = collect($conn->select("SELECT indexname FROM pg_indexes WHERE tablename = 'unita_immobiliari'")); + $hasIdx = $indexes->pluck('indexname')->contains('unita_immobiliari_codice_unita_unique'); } else { $idx = $conn->selectOne("SELECT COUNT(*) AS c FROM information_schema.statistics WHERE TABLE_SCHEMA = ? AND TABLE_NAME = 'unita_immobiliari' AND INDEX_NAME = 'unita_immobiliari_codice_unita_unique'", [$dbName]); $hasIdx = isset($idx->c) ? ((int) $idx->c > 0) : false; diff --git a/database/migrations/2025_12_14_170000_create_contabilita_fatture_fornitori_tables.php b/database/migrations/2025_12_14_170000_create_contabilita_fatture_fornitori_tables.php index fe45a0b..a744ee1 100755 --- a/database/migrations/2025_12_14_170000_create_contabilita_fatture_fornitori_tables.php +++ b/database/migrations/2025_12_14_170000_create_contabilita_fatture_fornitori_tables.php @@ -23,6 +23,14 @@ private function indexExists(string $table, string $indexName): bool return false; } + if (DB::connection()->getDriverName() === 'pgsql') { + $row = DB::selectOne( + "SELECT 1 AS ok FROM pg_indexes WHERE tablename = ? AND indexname = ? LIMIT 1", + [$table, $indexName] + ); + return (bool) ($row?->ok ?? false); + } + $row = DB::selectOne( 'SELECT 1 AS ok FROM information_schema.statistics WHERE table_schema = DATABASE() AND table_name = ? AND index_name = ? LIMIT 1', [$table, $indexName], diff --git a/database/migrations/2026_06_03_171500_scope_unita_codes_by_stabile.php b/database/migrations/2026_06_03_171500_scope_unita_codes_by_stabile.php index 197714c..a6e7a63 100755 --- a/database/migrations/2026_06_03_171500_scope_unita_codes_by_stabile.php +++ b/database/migrations/2026_06_03_171500_scope_unita_codes_by_stabile.php @@ -57,6 +57,14 @@ private function indexExists(string $table, string $index): bool return false; } + if (DB::connection()->getDriverName() === 'pgsql') { + $row = DB::selectOne( + "SELECT COUNT(*) AS c FROM pg_indexes WHERE tablename = ? AND indexname = ?", + [$table, $index] + ); + return isset($row->c) && (int) $row->c > 0; + } + $database = Schema::getConnection()->getDatabaseName(); $row = DB::selectOne( 'SELECT COUNT(*) AS c FROM information_schema.statistics WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? AND INDEX_NAME = ?',