2014-05-13 9 views
17

Volevo solo sapere se è possibile.Come si esegue un'eliminazione di massa utilizzando Laravel 4.1, in base all'array di ID o oggetti?

faccio a sapere quando si dispone di più righe da inserire, si può semplicemente costruire un array e fare qualcosa di simile:

DB::table('some_table')->insert($array); 

Ma per quanto ho letto, facendo lo stesso per la cancellazione non sembra sia possibile, mi piacerebbe sapere se qualcuno sa di un modo per fare qualcosa di simile:

DB::table('some_table')->delete($array); 
+0

questo può aiutare? http://stackoverflow.com/questions/21747529/laravel-how-to-delete-rows-from-multiple-table-with-same-id-with-only-1-query –

+0

in realtà, l'ho già fatto . È facile perché in questo caso stai cancellando ogni record in cui un attributo è uguale a un valore specifico. Nel mio caso, in alcuni casi ho bisogno di costruire un array con tre diversi attributi, e ogni attributo può assumere valori diversi ... – arrigonfr

+0

Dire .. $ array = array (array ('1' => 1, '2' => 2, '3' => 3), array ('1' => 4, '2' => 5, '3' => 6), array ('1' => 7, '2' => 8, '3' => 9), array ('1' => 0, '2' => 1, '3' => 2)); Quello che voglio evitare è inserire la query delete all'interno di un ciclo foreach. – arrigonfr

risposta

38

molti modi di eliminazione di record in laravel 4.1

1) Quando si desidera eliminare i record dal database, è sufficiente chiamare il metodo di eliminazione:

$affected = DB::table('users')->where('id', '=', 1)->delete(); 

2) Vuoi eliminare rapidamente un record per la sua identità? Nessun problema. Basta passare l'ID nel metodo di eliminazione:

$affected = DB::table('users')->delete(1); 

3) Se si desidera eliminare più record da id in una sola volta, passando loro ID in un array - utilizzare il seguente

$users_to_delete = array(1, 2, 3); 
DB::table('users')->whereIn('id', $users_to_delete)->delete(); 

4) Se si desidera eliminare più record da id in una sola volta, passando un array di utenti - utilizzare il seguente

 //(case A) User fields indexed by number 0,1,2.. 
     $users_to_delete = array(
      '0'=> array('1','Frank','Smith','Whatever'), 
      '1'=> array('5','John','Johnson','Whateverelse'), 
     ); 

     $ids_to_delete = array_map(function($item){ return $item[0]; }, $users_to_delete); 

     DB::table('users')->whereIn('id', $ids_to_delete)->delete(); 

     //(case B) User fields indexed by key 
     $users_to_delete = array(
      '0'=> array('id'=>'1','name'=>'Frank','surname'=>'Smith','title'=>'Whatever'), 
      '1'=> array('id'=>'5','name'=>'John','surname'=>'Johnson','title'=>'Whateverelse'), 
     ); 

     $ids_to_delete = array_map(function($item){ return $item['id']; }, $users_to_delete); 

     DB::table('users')->whereIn('id', $ids_to_delete)->delete(); 

5) Eliminazione un modello esistente per chiave

User::destroy(1); 
User::destroy(array(1, 2, 3)); 
User::destroy(1, 2, 3); 

6) Naturalmente, si può anche eseguire una query di eliminazione su una serie di modelli:

$affectedRows = User::where('votes', '>', 100)->delete(); 
+0

e se devo eliminare da più tabelle qualsiasi aiuto per favore –

Problemi correlati