Commit 9e29fe09 authored by Marco Pivetta's avatar Marco Pivetta

#722 - `Doctrine\DBAL\Connection#delete()` refuses non-empty criteria

parent ba9cdd26
......@@ -20,6 +20,7 @@
namespace Doctrine\DBAL;
use Doctrine\DBAL\Driver\ServerInfoAwareConnection;
use Doctrine\DBAL\Exception\InvalidArgumentException;
use PDO;
use Closure;
use Exception;
......@@ -570,36 +571,28 @@ class Connection implements DriverConnection
* @param array $types The types of identifiers.
*
* @return integer The number of affected rows.
*/
public function delete($tableExpression, array $identifier, array $types = array())
{
$this->connect();
return $this->executeUpdate(
'DELETE FROM ' . $tableExpression . $this->getWhereSql($identifier),
array_values($identifier),
is_string(key($types)) ? $this->extractTypeValues($identifier, $types) : $types
);
}
/**
* @param array $identifier An associative array containing column-value pairs.
*
* @return string
* @throws InvalidArgumentException
*/
private function getWhereSql(array $identifier)
public function delete($tableExpression, array $identifier, array $types = array())
{
if (empty($identifier)) {
return '';
throw InvalidArgumentException::fromEmptyCriteria();
}
$this->connect();
$criteria = array();
foreach (array_keys($identifier) as $columnName) {
$criteria[] = $columnName . ' = ?';
}
return ' WHERE ' . implode(' AND ', $criteria);
return $this->executeUpdate(
'DELETE FROM ' . $tableExpression . ' WHERE ' . implode(' AND ', $criteria),
array_values($identifier),
is_string(key($types)) ? $this->extractTypeValues($identifier, $types) : $types
);
}
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment