function find($magic_params = array())
 {
     if ($this->is_owner_new) {
         throw new lmbException('Not implemented for in memory collection');
     }
     if (is_string($magic_params) || is_object($magic_params)) {
         $magic_params = array('criteria' => lmbSQLCriteria::objectify($magic_params));
     }
     if (isset($this->default_params['criteria'])) {
         if (isset($magic_params['criteria'])) {
             $magic_params['criteria']->addAnd($this->default_params['criteria']);
         } else {
             $magic_params['criteria'] = $this->default_params['criteria'];
         }
     }
     if (!isset($magic_params['sort']) && isset($this->default_params['sort'])) {
         $magic_params['sort'] = $this->default_params['sort'];
     }
     if (!isset($magic_params['join'])) {
         $magic_params['join'] = $this->join_relations;
     }
     if (!isset($magic_params['attach'])) {
         $magic_params['attach'] = $this->attach_relations;
     }
     $query = $this->_createARQuery($magic_params);
     $rs = $query->fetch();
     return $this->_applyDecorators($rs);
 }
Ejemplo n.º 2
0
 /**
  *  Adds class name criterion to passed in criteria
  *  @param string|object criteria
  *  @return object
  */
 function addClassCriteria($criteria)
 {
     if (!is_object($criteria)) {
         $criteria = lmbSQLCriteria::objectify($criteria);
     }
     if ($this->_isInheritable()) {
         $criteria = $this->_getInheritanceCriteria()->add($criteria);
     }
     return $criteria;
 }
Ejemplo n.º 3
0
 function addOr($criteria)
 {
     $this->criteria[] = lmbSQLCriteria::objectify($criteria);
     $this->conjunctions[] = self::_OR_;
     return $this;
 }
Ejemplo n.º 4
0
 /**
  * @param string|object $class_name_or_obj
  * @param array $params
  * @param lmbDbConnection $conn
  * @param string $sql
  * @return lmbARQuery
  */
 static function create($class_name_or_obj, $params = array(), $conn = null, $sql = '')
 {
     if (!$conn) {
         $conn = lmbToolkit::instance()->getDefaultDbConnection();
     }
     if (!is_object($class_name_or_obj)) {
         $class_name_or_obj = new $class_name_or_obj();
     }
     $query = new lmbARQuery($class_name_or_obj, $conn, $sql, $params);
     if (isset($params['criteria']) && $params['criteria']) {
         $criteria = lmbSQLCriteria::objectify($params['criteria']);
     } else {
         $criteria = lmbSQLCriteria::create();
     }
     $has_class_criteria = false;
     if (isset($params['class'])) {
         $filter_object = new $params['class']();
         $criteria = $filter_object->addClassCriteria($criteria);
         $has_class_criteria = true;
     }
     if (!$has_class_criteria) {
         $criteria = $class_name_or_obj->addClassCriteria($criteria);
     }
     $query->where($criteria);
     $sort_params = isset($params['sort']) && $params['sort'] ? $params['sort'] : $class_name_or_obj->getDefaultSortParams();
     $query->order($sort_params);
     if (isset($params['group']) && $params['group']) {
         $query->group($params['group']);
     }
     $join = isset($params['join']) && $params['join'] ? $params['join'] : array();
     if (!is_array($join)) {
         $join = explode(',', $join);
     }
     foreach ($join as $relation_name => $params_or_relation_name) {
         if (is_numeric($relation_name)) {
             $query->eagerJoin(trim($params_or_relation_name));
         } else {
             $query->eagerJoin(trim($relation_name), $params_or_relation_name);
         }
     }
     $attach = isset($params['attach']) && $params['attach'] ? $params['attach'] : array();
     if (!is_array($attach)) {
         $attach = explode(',', $attach);
     }
     foreach ($attach as $relation_name => $params_or_relation_name) {
         if (is_numeric($relation_name)) {
             $query->eagerAttach(trim($params_or_relation_name));
         } else {
             $query->eagerAttach(trim($relation_name), $params_or_relation_name);
         }
     }
     return $query;
 }
Ejemplo n.º 5
0
 function addCriteria($criteria)
 {
     $this->_criterias[] = lmbSQLCriteria::objectify($criteria);
     $this->_registerHint('where');
     return $this;
 }
Ejemplo n.º 6
0
 function testObjectifyNotSupportedArrayFormatException()
 {
     try {
         //actually this format could be useful as well...
         $criteria = lmbSQLCriteria::objectify(array('id' => 1));
         $this->assertTrue(false);
     } catch (lmbDbException $e) {
     }
 }
Ejemplo n.º 7
0
 function delete($table, $criteria = null)
 {
     $query = new lmbDeleteQuery($table, $this->conn);
     if ($criteria) {
         $query->addCriteria(lmbSQLCriteria::objectify($criteria));
     }
     $this->stmt = $query->getStatement($this->conn);
     $this->stmt->execute();
     return $this;
 }
Ejemplo n.º 8
0
 function addHaving($criteria)
 {
     $this->_having[] = lmbSQLCriteria::objectify($criteria);
     $this->_registerHint('having');
     return $this;
 }