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; } }
public function execute() { // 1. create a statement $stmt = ActiveRecord::connection()->prepare($this->compile()->toSQL()); $stmt->setLimit($this->limit); $stmt->setOffset($this->offset); // 2. reflect on owner $clazz = new ReflectionClass($this->owner); // 3. return stuff. if ($this->type == 'all') { return $stmt->getAllRecords($this->bindings, $clazz); } else { return $clazz->newInstance($stmt->executeQuery($this->bindings)->next()->getRow()); } }
/** * Creates a ResultSet from a QueryBuilder * * @return ResultSet */ protected static function create_result_set(QueryBuilder $builder) { $timer = new MTimer(); $stmt = ActiveRecord::connection()->prepareStatement($builder->compile()->getQueryString()); $i = 1; foreach ($builder->getBindings() as $binding) { $stmt->set($i++, $binding); } if ($limit = $builder->getLimit()) { $stmt->setLimit($limit); } if ($offset = $builder->getOffset()) { $stmt->setOffset($offset); } $rs = $stmt->executeQuery(); ActiveRecord::log($timer); $stmt->close(); return $rs; }
/** * Creates a ResultSet from a QueryBuilder * * @return ResultSet */ protected static function create_result_set(QueryBuilder $builder) { $stmt = ActiveRecord::connection()->prepareStatement($builder->compile()->getQueryString()); $i = 1; foreach ($builder->getBindings() as $binding) { $stmt->set($i++, $binding); } if ($limit = $builder->getLimit()) { $stmt->setLimit($limit); } if ($offset = $builder->getOffset()) { $stmt->setOffset($offset); } $rs = $stmt->executeQuery(); Registry::get('__logger')->debug('Query: ' . ActiveRecord::$conn->lastQuery); $stmt->close(); return $rs; }