public function has_field($field_name) { #echo "\$field_name: $field_name\n"; $fields = $this->get_fields(); if (preg_match('/^(\\w+)(?:__|\\.)(\\w+)$/', $field_name, $matches)) { $table_name = $matches[1]; #echo "\$table_name: $table_name\n"; $just_field_name = $matches[2]; #echo "\$just_field_name: $just_field_name\n"; if ($table_name == $this->get_name()) { #echo "Field is in this table.\n"; #echo 'get_class(parent): ' . get_class(parent) . "\n"; #return parent::has_field($just_field_name); return parent::has_field("{$table_name}.{$just_field_name}"); } else { $foreign_key_table_names = $this->get_foreign_key_table_names(); $database = $this->get_database(); foreach ($foreign_key_table_names as $f_k_t_n) { if ($f_k_t_n == $table_name) { $table = $database->get_table($table_name); return $table->has_field($just_field_name); } } } } else { return parent::has_field($field_name); } return FALSE; }