This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
lnkohana/modules/database/classes/Kohana/Database/Query/Builder/Delete.php
2013-04-22 14:09:50 +10:00

100 lines
2.0 KiB
PHP

<?php defined('SYSPATH') OR die('No direct script access.');
/**
* Database query builder for DELETE statements. See [Query Builder](/database/query/builder) for usage and examples.
*
* @package Kohana/Database
* @category Query
* @author Kohana Team
* @copyright (c) 2008-2009 Kohana Team
* @license http://kohanaphp.com/license
*/
class Kohana_Database_Query_Builder_Delete extends Database_Query_Builder_Where {
// DELETE FROM ...
protected $_table;
/**
* Set the table for a delete.
*
* @param mixed $table table name or array($table, $alias) or object
* @return void
*/
public function __construct($table = NULL)
{
if ($table)
{
// Set the inital table name
$this->_table = $table;
}
// Start the query with no SQL
return parent::__construct(Database::DELETE, '');
}
/**
* Sets the table to delete from.
*
* @param mixed $table table name or array($table, $alias) or object
* @return $this
*/
public function table($table)
{
$this->_table = $table;
return $this;
}
/**
* Compile the SQL query and return it.
*
* @param mixed $db Database instance or name of instance
* @return string
*/
public function compile($db = NULL)
{
if ( ! is_object($db))
{
// Get the database instance
$db = Database::instance($db);
}
// Start a deletion query
$query = 'DELETE FROM '.$db->quote_table($this->_table);
if ( ! empty($this->_where))
{
// Add deletion conditions
$query .= ' WHERE '.$this->_compile_conditions($db, $this->_where);
}
if ( ! empty($this->_order_by))
{
// Add sorting
$query .= ' '.$this->_compile_order_by($db, $this->_order_by);
}
if ($this->_limit !== NULL)
{
// Add limiting
$query .= ' LIMIT '.$this->_limit;
}
$this->_sql = $query;
return parent::compile($db);
}
public function reset()
{
$this->_table = NULL;
$this->_where = array();
$this->_parameters = array();
$this->_sql = NULL;
return $this;
}
} // End Database_Query_Builder_Delete