First of all, I just want to mention that this is not an "issue" at all. Deleting with Doctrine DBAL is not a problem and I am able to do it.
What I actually wanted to know is if there is way to delete multiple rows at once without have to loop for example an array.
For my project I use Silex and the Doctrine DBAL
Here goes an example how I currently do it:
$toDelete = array(1,2,3,4);
foreach($toDelete as $id){
$this->app['db']->delete('table_name',array('id' => $id ));
}
Is there any approach to avoid the looping?
You can use list of parameters: http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/data-retrieval-and-manipulation.html#list-of-parameters-conversion
$connection->executeQuery('DELETE FROM table_name WHERE id IN (?)',
array(array(1,2,3,4)),
array(\Doctrine\DBAL\Connection::PARAM_INT_ARRAY)
);
or with query builder:
$builder = $connection->createQueryBuilder()
->delete('table_name')
->where('id in (:ids)')
->setParameter(':ids', array(array(1,2,3,4)), Connection::PARAM_INT_ARRAY);
$builder->execute();
Not without writing your own query.
$app["db"]
(assuming default silex/doctrine setup) is a doctrine connection, so you have the possibility to execute any query you want.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With