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); }
/** * 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; }
function addOr($criteria) { $this->criteria[] = lmbSQLCriteria::objectify($criteria); $this->conjunctions[] = self::_OR_; return $this; }
/** * @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; }
function addCriteria($criteria) { $this->_criterias[] = lmbSQLCriteria::objectify($criteria); $this->_registerHint('where'); return $this; }
function testObjectifyNotSupportedArrayFormatException() { try { //actually this format could be useful as well... $criteria = lmbSQLCriteria::objectify(array('id' => 1)); $this->assertTrue(false); } catch (lmbDbException $e) { } }
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; }
function addHaving($criteria) { $this->_having[] = lmbSQLCriteria::objectify($criteria); $this->_registerHint('having'); return $this; }