db->tableExists('print_requests')) { return; } $db = \Config\Database::connect(); $keys = $db->getForeignKeyData('print_requests'); foreach ($keys as $key) { if ($key->constraint_name === 'print_requests_class_id_foreign') { try { $this->forge->dropForeignKey('print_requests', 'print_requests_class_id_foreign'); } catch (\Throwable $e) { // Already absent. } break; } } if (! $this->db->tableExists('classSection')) { return; } $orphanCount = (int) $db->table('print_requests pr') ->join('classSection cs', 'cs.id = pr.class_id', 'left') ->where('pr.class_id IS NOT NULL', null, false) ->where('cs.id IS NULL', null, false) ->countAllResults(); if ($orphanCount > 0) { return; } $this->forge->addForeignKey('class_id', 'classSection', '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. } } }