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 @@ ...@@ -20,6 +20,7 @@
namespace Doctrine\DBAL; namespace Doctrine\DBAL;
use Doctrine\DBAL\Driver\ServerInfoAwareConnection; use Doctrine\DBAL\Driver\ServerInfoAwareConnection;
use Doctrine\DBAL\Exception\InvalidArgumentException;
use PDO; use PDO;
use Closure; use Closure;
use Exception; use Exception;
...@@ -570,36 +571,28 @@ class Connection implements DriverConnection ...@@ -570,36 +571,28 @@ class Connection implements DriverConnection
* @param array $types The types of identifiers. * @param array $types The types of identifiers.
* *
* @return integer The number of affected rows. * @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)) { if (empty($identifier)) {
return ''; throw InvalidArgumentException::fromEmptyCriteria();
} }
$this->connect();
$criteria = array(); $criteria = array();
foreach (array_keys($identifier) as $columnName) { foreach (array_keys($identifier) as $columnName) {
$criteria[] = $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