j4mie / idiorm

A lightweight nearly-zero-configuration object-relational mapper and fluent query builder for PHP5.
http://j4mie.github.com/idiormandparis/
2.01k stars 369 forks source link

Mapping column properties in fluent style #167

Closed mapner closed 10 years ago

mapner commented 10 years ago

Hi,

I was thinking how to map column properties in fluent style:

// ** in example.php file 

ORM::for_table('tkc_tickets')->
Column('customer_id')->DBColumn('CUSTOMER_ID')->PrimaryKey()->Title('Customer')->Valid('NotEmpty')->
Column('datetime_add')->DBColumn('DATETIME_ADD')->Title('Date/Time')->Valid(ARRAY('NotEmpty','DATE'));

// ** in idiorm.php file 

      // ** new properties
    protected $_columns_properties = array();
    protected $_currentColumn = ''; 

      // *** new methods...

    public function Column($columnName)
    {
        $this->_currentColumn = $columnName;
        if(!isset($this->_columns_properties[$columnName]['dbcolumn'])){
            $this->_setup_column_property('dbcolumn',$columnName);                      
        }                   
        return $this;
    }

    public function DBColumn($DBcolumnName)
    {
        $this->_setup_column_property('pk',$pk);                        
        return $this;
    }   

    public function PrimaryKey($pk=true)
    {
        $this->_setup_column_property('pk',$pk);                        
        return $this;
    }

    public function Title($title)
    {
        $this->_setup_column_property('title',$title);              
        return $this;
    }

    public function Valid($valid)
    {
        $this->_setup_column_property('valid',$valid);      
        return $this;
    }   

    protect function _setup_column_property($property,$value) 
    {
        if($this->_currentColumn){
            $this->_columns_properties[$this->_currentColumn][$property] = $value;      
        }       

    }

Regards

treffynnon commented 10 years ago

Unless I am missing something this does not look like an issue with Idiorm itself. Is it a proposed feature request? An FYI for other users of Idiorm?