Database_Query
extends Kohana_Database_Query
Database query wrapper. See Parameterized Statements for usage and examples.
Information
This class is a transparent base class for Kohana_Database_Query
Constants
- None
Properties
-
protected $_as_object
-
Default value:
bool FALSE
-
protected $_force_execute
-
Default value:
bool FALSE
-
protected $_lifetime
-
Default value:
NULL
-
protected $_object_params
-
Default value:
array(0)
-
protected $_parameters
-
Default value:
array(0)
-
protected $_sql
-
Default value:
NULL
-
protected $_type
-
Default value:
NULL
Methods
public __construct(integer $type , string $sql ) (defined in Kohana_Database_Query)
Creates a new SQL query of the specified type.
Parameters
- integer $type required - Query type: Database::SELECT, Database::INSERT, etc
- string $sql required - Query string
Return Values
- void
Source Code
public function __construct($type, $sql)
{
$this->_type = $type;
$this->_sql = $sql;
}
public __toString() (defined in Kohana_Database_Query)
Return the SQL query string.
Return Values
- string
Source Code
public function __toString()
{
try
{
// Return the SQL string
return $this->compile(Database::instance());
}
catch (Exception $e)
{
return Kohana_Exception::text($e);
}
}
public as_assoc() (defined in Kohana_Database_Query)
Returns results as associative arrays
Return Values
- $this
Source Code
public function as_assoc()
{
$this->_as_object = FALSE;
$this->_object_params = [];
return $this;
}
public as_object([ string $class = bool TRUE , array $params = NULL ] ) (defined in Kohana_Database_Query)
Returns results as objects
Parameters
- string $class = bool TRUE - Classname or TRUE for stdClass
- array $params = NULL - $params
Return Values
- $this
Source Code
public function as_object($class = TRUE, array $params = NULL)
{
$this->_as_object = $class;
if ($params)
{
// Add object parameters
$this->_object_params = $params;
}
return $this;
}
public bind(string $param , mixed & $var ) (defined in Kohana_Database_Query)
Bind a variable to a parameter in the query.
Parameters
- string $param required - Parameter key to replace
- byref mixed $var required - Variable to use
Return Values
- $this
Source Code
public function bind($param, & $var)
{
// Bind a value to a variable
$this->_parameters[$param] =& $var;
return $this;
}
public cached([ integer $lifetime = NULL , boolean $force = bool FALSE ] ) (defined in Kohana_Database_Query)
Enables the query to be cached for a specified amount of time.
Parameters
- integer $lifetime = NULL - Number of seconds to cache, 0 deletes it from the cache
- boolean $force = bool FALSE - Whether or not to execute the query during a cache hit
Tags
Return Values
- $this
Source Code
public function cached($lifetime = NULL, $force = FALSE)
{
if ($lifetime === NULL)
{
// Use the global setting
$lifetime = Kohana::$cache_life;
}
$this->_force_execute = $force;
$this->_lifetime = $lifetime;
return $this;
}
public compile([ mixed $db = NULL ] ) (defined in Kohana_Database_Query)
Compile the SQL query and return it. Replaces any parameters with their given values.
Parameters
- mixed $db = NULL - Database instance or name of instance
Return Values
- string
Source Code
public function compile($db = NULL)
{
if ( ! is_object($db))
{
// Get the database instance
$db = Database::instance($db);
}
// Import the SQL locally
$sql = $this->_sql;
if ( ! empty($this->_parameters))
{
// Quote all of the values
$values = array_map([$db, 'quote'], $this->_parameters);
// Replace the values in the SQL
$sql = strtr($sql, $values);
}
return $sql;
}
public execute([ mixed $db = NULL , string $as_object = NULL , array $object_params = NULL ] ) (defined in Kohana_Database_Query)
Execute the current query on the given database.
Parameters
- mixed $db = NULL - Database instance or name of instance
- string $as_object = NULL - Result object classname, TRUE for stdClass or FALSE for array
- array $object_params = NULL - Result object constructor arguments
Return Values
- object - Database_Result for SELECT queries
- mixed - The insert id for INSERT queries
- integer - Number of affected rows for all other queries
Source Code
public function execute($db = NULL, $as_object = NULL, $object_params = NULL)
{
if ( ! is_object($db))
{
// Get the database instance
$db = Database::instance($db);
}
if ($as_object === NULL)
{
$as_object = $this->_as_object;
}
if ($object_params === NULL)
{
$object_params = $this->_object_params;
}
// Compile the SQL query
$sql = $this->compile($db);
if ($this->_lifetime !== NULL AND $this->_type === Database::SELECT)
{
// Set the cache key based on the database instance name and SQL
$cache_key = 'Database::query("'.$db.'", "'.$sql.'")';
// Read the cache first to delete a possible hit with lifetime <= 0
if (($result = Kohana::cache($cache_key, NULL, $this->_lifetime)) !== NULL
AND ! $this->_force_execute)
{
// Return a cached result
return new Database_Result_Cached($result, $sql, $as_object, $object_params);
}
}
// Execute the query
$result = $db->query($this->_type, $sql, $as_object, $object_params);
if (isset($cache_key) AND $this->_lifetime > 0)
{
// Cache the result array
Kohana::cache($cache_key, $result->as_array(), $this->_lifetime);
}
return $result;
}
public param(string $param , mixed $value ) (defined in Kohana_Database_Query)
Set the value of a parameter in the query.
Parameters
- string $param required - Parameter key to replace
- mixed $value required - Value to use
Return Values
- $this
Source Code
public function param($param, $value)
{
// Add or overload a new parameter
$this->_parameters[$param] = $value;
return $this;
}
public parameters(array $params ) (defined in Kohana_Database_Query)
Add multiple parameters to the query.
Parameters
- array $params required - List of parameters
Return Values
- $this
Source Code
public function parameters(array $params)
{
// Merge the new parameters in
$this->_parameters = $params + $this->_parameters;
return $this;
}
public type() (defined in Kohana_Database_Query)
Get the type of the query.
Return Values
- integer
Source Code
public function type()
{
return $this->_type;
}