2016-03-22 26 views

cevap

1

Toplu birkaç farklı şekilde silmek uygulayabilirsiniz:

1) DQL

kullanma
<?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) yineleme

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

3) Toplu İşleme sonuçları

kimlikleri [] = 1 & kimlikleri [] = 2 & kimlikleri [] = 3 öyleyse, denetleyici içinde kimliklerini alabilirsiniz:
<?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(); 

Güncelleme

aşağıdaki uri bildiğinizi varsayalım :

<?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

Yanıt için teşekkürler ve FYKI Şu anda yaklaşım 2 kullanıyorum. Ancak bu kimlik bilgilerini görüntüleme dosyasından nasıl geçirebilirim? Karşılaştığım sorun bu. –

+0

Güncellenen örneğe bakın lütfen –

İlgili konular