mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
83 lines
2.4 KiB
PHP
83 lines
2.4 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* Object representing a SQL DELETE query.
|
||
|
* The various parts of the SQL query can be manipulated individually.
|
||
|
*
|
||
|
* @package framework
|
||
|
* @subpackage model
|
||
|
*/
|
||
|
class SQLDelete extends SQLConditionalExpression {
|
||
|
|
||
|
/**
|
||
|
* List of tables to limit the delete to, if multiple tables
|
||
|
* are specified in the condition clause
|
||
|
*
|
||
|
* @see http://dev.mysql.com/doc/refman/5.0/en/delete.html
|
||
|
*
|
||
|
* @var array
|
||
|
*/
|
||
|
protected $delete = array();
|
||
|
|
||
|
/**
|
||
|
* Construct a new SQLDelete.
|
||
|
*
|
||
|
* @param array|string $from An array of Tables (FROM clauses). The first one should be just the table name.
|
||
|
* @param array $where An array of WHERE clauses.
|
||
|
* @param array|string $delete The table(s) to delete, if multiple tables are queried from
|
||
|
* @return self Self reference
|
||
|
*/
|
||
|
public static function create($from = array(), $where = array(), $delete = array()) {
|
||
|
return Injector::inst()->createWithArgs(__CLASS__, func_get_args());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Construct a new SQLDelete.
|
||
|
*
|
||
|
* @param array|string $from An array of Tables (FROM clauses). The first one should be just the table name.
|
||
|
* @param array $where An array of WHERE clauses.
|
||
|
* @param array|string $delete The table(s) to delete, if multiple tables are queried from
|
||
|
*/
|
||
|
function __construct($from = array(), $where = array(), $delete = array()) {
|
||
|
parent::__construct($from, $where);
|
||
|
$this->setDelete($delete);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* List of tables to limit the delete to, if multiple tables
|
||
|
* are specified in the condition clause
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public function getDelete() {
|
||
|
return $this->delete;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sets the list of tables to limit the delete to, if multiple tables
|
||
|
* are specified in the condition clause
|
||
|
*
|
||
|
* @param string|array $tables Escaped SQL statement, usually an unquoted table name
|
||
|
* @return self Self reference
|
||
|
*/
|
||
|
public function setDelete($tables) {
|
||
|
$this->delete = array();
|
||
|
return $this->addDelete($tables);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sets the list of tables to limit the delete to, if multiple tables
|
||
|
* are specified in the condition clause
|
||
|
*
|
||
|
* @param string|array $tables Escaped SQL statement, usually an unquoted table name
|
||
|
* @return self Self reference
|
||
|
*/
|
||
|
public function addDelete($tables) {
|
||
|
if(is_array($tables)) {
|
||
|
$this->delete = array_merge($this->delete, $tables);
|
||
|
} elseif(!empty($tables)) {
|
||
|
$this->delete[str_replace(array('"','`'), '', $tables)] = $tables;
|
||
|
}
|
||
|
}
|
||
|
}
|