Files
alrahma_sunday_school/app/Database/Migrations/2026-01-06-205621_FixPrintRequestsForeignKeyAgain.php
2026-08-15 15:07:16 -04:00

50 lines
1.4 KiB
PHP

<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class FixPrintRequestsForeignKeyAgain extends Migration
{
public function up()
{
if (! $this->db->tableExists('print_requests') || ! $this->db->tableExists('classSection')) {
return;
}
$db = \Config\Database::connect();
$keys = $db->getForeignKeyData('print_requests');
foreach ($keys as $key) {
if ($key->constraint_name === 'print_requests_class_id_foreign') {
return;
}
}
$orphanCount = (int) $db->table('print_requests pr')
->join('classSection cs', 'cs.class_id = pr.class_id', 'left')
->where('pr.class_id IS NOT NULL', null, false)
->where('cs.class_id IS NULL', null, false)
->countAllResults();
if ($orphanCount > 0) {
return;
}
$this->forge->addForeignKey('class_id', 'classSection', 'class_id', 'CASCADE', 'CASCADE');
$this->forge->processIndexes('print_requests');
}
public function down()
{
if (! $this->db->tableExists('print_requests')) {
return;
}
try {
$this->forge->dropForeignKey('print_requests', 'print_requests_class_id_foreign');
} catch (\Throwable $e) {
// Already absent.
}
}
}