Drop this constructor in your class that is extending DBObject, and don't call parent::__construct
The best thing would to move "$this->idColumnName = 'id';" form the constructor to the definition of the object.
In that case one would only need to set $this->columnName before calling parent::__construct in the class extending DBObject.
protected function __construct($table_name, $columns, $id = null)
{
$this->className = get_class($this);
$this->tableName = $table_name;
// A note on hardcoding $this->idColumnName = 'id'...
// In three years working with this framework, I've used
// a different id name exactly once - so I've decided to
// drop the option from the constructor. You can overload
// the constructor yourself if you have the need.
$this->idColumnName = 'id';
foreach($columns as $col)
$this->columns[$col] = null;
if(!is_null($id))
if (!$this->select($id))
throw new Exception("Unknown ID");
}