diff --git a/draft/new-core/Query.php b/draft/new-core/Query.php index 39b233bd3..ca9586bbb 100644 --- a/draft/new-core/Query.php +++ b/draft/new-core/Query.php @@ -30,7 +30,8 @@ Doctrine::autoload('Doctrine_Hydrate'); * @version $Revision: 1296 $ * @author Konsta Vesterinen */ -class Doctrine_Query2 extends Doctrine_Hydrate2 implements Countable { +class Doctrine_Query2 extends Doctrine_Hydrate2 implements Countable +{ /** * @param array $subqueryAliases the table aliases needed in some LIMIT subqueries */ diff --git a/draft/new-core/QueryApi.php b/draft/new-core/QueryApi.php new file mode 100644 index 000000000..2d8ef182b --- /dev/null +++ b/draft/new-core/QueryApi.php @@ -0,0 +1,218 @@ +. + */ + +/** + * Doctrine_Query + * + * @package Doctrine + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @category Object Relational Mapping + * @link www.phpdoctrine.com + * @since 1.0 + * @version $Revision: 1296 $ + * @author Konsta Vesterinen + */ +class Doctrine_Query +{ + /** + * addSelect + * adds fields to the SELECT part of the query + * + * @param string $select DQL SELECT part + * @return Doctrine_Query + */ + public function addSelect($select) + { + return $this->getParser('select')->parse($select, true); + } + /** + * addWhere + * adds conditions to the WHERE part of the query + * + * @param string $where DQL WHERE part + * @param mixed $params an array of parameters or a simple scalar + * @return Doctrine_Query + */ + public function addWhere($where, $params = array()) + { + if(is_array($params)) { + $this->params = array_merge($this->params, $params); + } else { + $this->params[] = $params; + } + return $this->getParser('where')->parse($where, true); + } + /** + * addGroupBy + * adds fields to the GROUP BY part of the query + * + * @param string $groupby DQL GROUP BY part + * @return Doctrine_Query + */ + public function addGroupBy($groupby) + { + return $this->getParser('groupby')->parse($groupby, true); + } + /** + * addHaving + * adds conditions to the HAVING part of the query + * + * @param string $having DQL HAVING part + * @return Doctrine_Query + */ + public function addHaving($having) + { + return $this->getParser('having')->parse($having, true); + } + /** + * addOrderBy + * adds fields to the ORDER BY part of the query + * + * @param string $orderby DQL ORDER BY part + * @return Doctrine_Query + */ + public function addOrderBy($orderby) + { + return $this->getParser('orderby')->parse($orderby, true); + } + /** + * select + * sets the SELECT part of the query + * + * @param string $select DQL SELECT part + * @return Doctrine_Query + */ + public function select($select) + { + return $this->getParser('from')->parse($select); + } + /** + * from + * sets the FROM part of the query + * + * @param string $from DQL FROM part + * @return Doctrine_Query + */ + public function from($from) + { + return $this->getParser('from')->parse($from); + } + /** + * innerJoin + * appends an INNER JOIN to the FROM part of the query + * + * @param string $join DQL INNER JOIN + * @return Doctrine_Query + */ + public function innerJoin($join) + { + return $this->getParser('from')->parse('INNER JOIN ' . $join); + } + /** + * leftJoin + * appends a LEFT JOIN to the FROM part of the query + * + * @param string $join DQL LEFT JOIN + * @return Doctrine_Query + */ + public function leftJoin($join) + { + return $this->getParser('from')->parse('LERT JOIN ' . $join); + } + /** + * groupBy + * sets the GROUP BY part of the query + * + * @param string $groupby DQL GROUP BY part + * @return Doctrine_Query + */ + public function groupBy($groupby) + { + return $this->getParser('groupby')->parse($groupby); + } + /** + * where + * sets the WHERE part of the query + * + * @param string $join DQL WHERE part + * @param mixed $params an array of parameters or a simple scalar + * @return Doctrine_Query + */ + public function where($where, $params = array()) + { + if(is_array($params)) { + $this->params = array_merge($this->params, $params); + } else { + $this->params[] = $params; + } + return $this->getParser('where')->parse($where); + } + /** + * having + * sets the HAVING part of the query + * + * @param string $having DQL HAVING part + * @param mixed $params an array of parameters or a simple scalar + * @return Doctrine_Query + */ + public function having($having, $params) + { + if(is_array($params)) { + $this->params = array_merge($this->params, $params); + } else { + $this->params[] = $params; + } + return $this->getParser('having')->parse($having); + } + /** + * orderBy + * sets the ORDER BY part of the query + * + * @param string $groupby DQL ORDER BY part + * @return Doctrine_Query + */ + public function orderBy($dql) + { + return $this->getParser('orderby')->parse($dql); + } + /** + * limit + * sets the DQL query limit + * + * @param integer $limit limit to be used for limiting the query results + * @return Doctrine_Query + */ + public function limit($limit) + { + return $this->getParser('limit')->parse($dql); + } + /** + * offset + * sets the DQL query offset + * + * @param integer $offset offset to be used for paginating the query + * @return Doctrine_Query + */ + public function offset($dql) + { + return $this->getParser('offset')->parse($dql); + } +}