protected function _setPrimaryField() { if (self::$_primaryField != "") { return; // primary field already known } $res = $this->_db->executeSQL("SHOW COLUMNS FROM `{$this->_table}`"); if (!$res) { throw new ModelException("Invalid query - " . $this->_db->getError()); } $has_key = false; $res = $this->_db->getResultset(); foreach ($res as $row) { if ($row['Key'] == 'PRI') { self::$_primaryField = $row['Field']; $has_key = true; } self::$_metadata[$row['Field']] = $row['Type']; } if ($has_key) { return; } throw new ModelException("Table {$this->_table} does not have primary key"); }