public function ActiveRecord($params = array()) { $this->__class_name = $this->getClassName(); $this->__table_name = Inflector::tabelize($this->__class_name); $this->__fields = ActiveRecord::connection()->getTableInfo($this->__table_name)->getFields(); $this->__primary_key = current(array_filter($this->__fields, array($this, '__pk'))); foreach ($params as $key => $value) { $this->{$key} = $value; } }
/** * Compile an SQLCommand from this query clauses. * * Valid Clauses: * <ul> * <li>'from' => to add an additional from clause</li> * <li>'condition' => to insert a sql condition</li> * <li>'order by' => to set an order by</li> * <li>'columns' => specify only the columns you want to select (check if it work on aliases too?)</li> * <li>'limit' => adjust the limit (this is not sended to the SQLCommand since is intended to be used with PreparedStatements)</li> * <li>'offset' => adds an offset (this is not sended to the SQLCommand since is intended to be used with PreparedStatements)</li> * <li>'left join' => add a left join</li> * </ul> * * @return SQLCommand */ public function compile() { if (isset($this->clauses['include'])) { $this->clauses['left join'] = Inflector::pluralize($this->clauses['include']) . ' on ' . Inflector::pluralize($this->clauses['include']) . '.id=' . Inflector::tabelize($this->owner) . '.' . $this->clauses['include'] . '_id'; } $command = SQLCommand::select()->from(Inflector::tabelize($this->owner)); if (isset($this->clauses['from'])) { $command->from($this->clauses['from']); } if (isset($this->clauses['condition'])) { $command->where($this->clauses['condition']); } if (isset($this->clauses['order by'])) { $command->orderBy($this->clauses['order by']); } if (isset($this->clauses['columns'])) { $command->columns($this->clauses['columns']); } if (isset($this->clauses['limit'])) { $this->limit = $this->clauses['limit']; } if (isset($this->clauses['offset'])) { $this->offset = $this->clauses['offset']; } if (isset($this->clauses['left join'])) { $command->leftJoin('left outer join ' . $this->clauses['left join']); } return $command; }