public function get_field($field_name) { $fields = $this->get_fields(); if (preg_match('/^(\\w+)(?:__|\\.)(\\w+)$/', $field_name, $matches)) { $table_name = $matches[1]; $just_field_name = $matches[2]; if ($table_name == $this->get_name()) { #$field = parent::get_field($just_field_name); #$field->set_name("$table_name.$just_field_name"); #return $field; #return parent::get_field($field_name); return parent::get_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); $field = $table->get_field($just_field_name); $field->set_name("{$table_name}.{$just_field_name}"); return $field; } } } } else { #echo "\$field_name: $field_name\n"; #echo "Should prepend table_name?\n"; return parent::get_field($field_name); } throw new Exception("No field called {$field_name} in " . $this->get_name()); }