suppress_errors(true); try {foreach(Schema::settingsPayments($wpdb) as $table=>$sql){ $columns=$wpdb->get_col($wpdb->prepare('SHOW COLUMNS FROM %i',$table));$this->check($wpdb); [$column,$definition]=$table===\ABeCe\Booking\Infrastructure\Database\Tables::name( $wpdb, 'resources' )?['payment_methods_override','longtext NULL']:['payment_medium','varchar(30) DEFAULT NULL']; if(!in_array($column,$columns,true)){$wpdb->query($wpdb->prepare('ALTER TABLE %i ADD '.$column.' '.$definition,$table));$this->check($wpdb);} Schema::verify($wpdb,$table,$sql); }}finally{$wpdb->suppress_errors($old);} } private function check(\wpdb $wpdb): void {if($wpdb->last_error)throw new RuntimeException(__('ABeCe Booking database migration failed. Existing data has been retained.','abece-booking'));} }