161 lines
3.0 KiB
PHP
161 lines
3.0 KiB
PHP
|
<?php defined('SYSPATH') or die('No direct script access.');
|
||
|
/**
|
||
|
* Database query builder for WHERE statements.
|
||
|
*
|
||
|
* @package Kohana/Database
|
||
|
* @category Query
|
||
|
* @author Kohana Team
|
||
|
* @copyright (c) 2008-2009 Kohana Team
|
||
|
* @license http://kohanaphp.com/license
|
||
|
*/
|
||
|
abstract class Kohana_Database_Query_Builder_Where extends Database_Query_Builder {
|
||
|
|
||
|
// WHERE ...
|
||
|
protected $_where = array();
|
||
|
|
||
|
// ORDER BY ...
|
||
|
protected $_order_by = array();
|
||
|
|
||
|
// LIMIT ...
|
||
|
protected $_limit = NULL;
|
||
|
|
||
|
/**
|
||
|
* Alias of and_where()
|
||
|
*
|
||
|
* @param mixed column name or array($column, $alias) or object
|
||
|
* @param string logic operator
|
||
|
* @param mixed column value
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function where($column, $op, $value)
|
||
|
{
|
||
|
return $this->and_where($column, $op, $value);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Creates a new "AND WHERE" condition for the query.
|
||
|
*
|
||
|
* @param mixed column name or array($column, $alias) or object
|
||
|
* @param string logic operator
|
||
|
* @param mixed column value
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function and_where($column, $op, $value)
|
||
|
{
|
||
|
$this->_where[] = array('AND' => array($column, $op, $value));
|
||
|
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Creates a new "OR WHERE" condition for the query.
|
||
|
*
|
||
|
* @param mixed column name or array($column, $alias) or object
|
||
|
* @param string logic operator
|
||
|
* @param mixed column value
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function or_where($column, $op, $value)
|
||
|
{
|
||
|
$this->_where[] = array('OR' => array($column, $op, $value));
|
||
|
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Alias of and_where_open()
|
||
|
*
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function where_open()
|
||
|
{
|
||
|
return $this->and_where_open();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Opens a new "AND WHERE (...)" grouping.
|
||
|
*
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function and_where_open()
|
||
|
{
|
||
|
$this->_where[] = array('AND' => '(');
|
||
|
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Opens a new "OR WHERE (...)" grouping.
|
||
|
*
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function or_where_open()
|
||
|
{
|
||
|
$this->_where[] = array('OR' => '(');
|
||
|
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Closes an open "AND WHERE (...)" grouping.
|
||
|
*
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function where_close()
|
||
|
{
|
||
|
return $this->and_where_close();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Closes an open "AND WHERE (...)" grouping.
|
||
|
*
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function and_where_close()
|
||
|
{
|
||
|
$this->_where[] = array('AND' => ')');
|
||
|
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Closes an open "OR WHERE (...)" grouping.
|
||
|
*
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function or_where_close()
|
||
|
{
|
||
|
$this->_where[] = array('OR' => ')');
|
||
|
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Applies sorting with "ORDER BY ..."
|
||
|
*
|
||
|
* @param mixed column name or array($column, $alias) or object
|
||
|
* @param string direction of sorting
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function order_by($column, $direction = NULL)
|
||
|
{
|
||
|
$this->_order_by[] = array($column, $direction);
|
||
|
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Return up to "LIMIT ..." results
|
||
|
*
|
||
|
* @param integer maximum results to return
|
||
|
* @return $this
|
||
|
*/
|
||
|
public function limit($number)
|
||
|
{
|
||
|
$this->_limit = (int) $number;
|
||
|
|
||
|
return $this;
|
||
|
}
|
||
|
|
||
|
} // End Database_Query_Builder_Where
|