2016-03-22 5 views

Antwort

1

können Sie implementieren Masse durch verschiedene Möglichkeiten, löschen:

1) Mit DQL

<?php 
$ids = [1, 2, 3, 4]; 
$query = $em->createQuery('DELETE FROM App\\Entity\\User u WHERE u.id IN (:ids)'); 
$query->setParameter('ids', $ids); 
$query->execute(); 

2) Iterieren Ergebnisse

<?php 
$ids = [1, 2, 3, 4]; 
$users = $em->getRepository('App\\Entity\\User')->findById($ids); 
foreach($users as $user) { 
    $em->remove($user); 
} 
$em->persist(); 

3) Stapelverarbeitung

<?php 
$batchSize = 20; 
$i = 0; 
$q = $em->createQuery('SELECT u FROM App\\Entity\\User u'); 
$iterableResult = $q->iterate(); 
while (($row = $iterableResult->next()) !== false) { 
    $em->remove($row[0]); 
    if (($i % $batchSize) === 0) { 
     $em->flush(); // Executes all deletions. 
     $em->clear(); // Detaches all objects from Doctrine! 
    } 
    ++$i; 
} 
$em->flush(); 

aktualisieren

Hier können wir folgende uri annehmen müssen: & ids [] = 1 & ids [] = 2 & ids [] = 3 so können Sie die IDs in der Steuerung erhalten :

<?php 
class UserController extends AbstractActionController 
{ 
    public function deleteAction() 
    { 
     $query = $this->getRequest()->getQuery(); 

     $users = $em->getRepository('App\\Entity\\User')->findById($query['ids']); 
     foreach($users as $user) { 
      $em->remove($user); 
     } 
     $em->persist(); 
    } 
} 
+0

Danke für die Antwort, und FYKI Ich benutze Ansatz 2 im Moment. Aber wie gebe ich diese $ ids aus der View-Datei? Das ist das Problem, vor dem ich stehe. –

+0

Siehe das aktualisierte Beispiel bitte –