mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-09-08 10:41:25 +02:00
BUG Fix incompatibility in Member_GroupList Fix regressions in merges from 3.1 BUG Fix Security failing on test classes BUG Fix postgresql compatibility Clarify sql encoding of table names
85 lines
2.4 KiB
PHP
85 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.
|
|
* Each should be ANSI quoted.
|
|
* @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.
|
|
* Each should be ANSI quoted.
|
|
* @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;
|
|
}
|
|
}
|
|
}
|