Пример #1
0
 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;
     }
 }
Пример #2
0
 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());
     }
 }
Пример #3
0
 /**
  * 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;
 }
Пример #4
0
 /**
  * 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;
 }