2014-05-13 4 views
17

Ich wollte nur wissen, ob es möglich ist.Wie führe ich eine Massenlöschung mit Laravel 4.1 durch, basierend auf einem Array von IDs oder Objekten?

Ich weiß, wenn Sie mehrere Zeilen einfügen müssen, können Sie einfach ein Array bauen und so etwas wie:

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

Aber soweit ich gelesen habe, zum Löschen das gleiche zu tun scheint nicht möglich sein, würde ich gerne wissen, ob jemand eine Möglichkeit, wissen so etwas wie zu tun:

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

dies helfen kann? http://stackoverflow.com/questions/21747529/laravel-how-to-delete-rows-from-multiple-table-with-same-id-with-only-1-query –

+0

eigentlich habe ich das schon gemacht . Es ist einfach, weil Sie in diesem Fall nur jeden Datensatz löschen, in dem ein Attribut einem bestimmten Wert entspricht. In meinem Fall muss ich in einigen Fällen ein Array mit drei verschiedenen Attributen erstellen, und jedes Attribut kann verschiedene Werte annehmen ... – arrigonfr

+0

Say .. $ 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)); Was ich vermeiden möchte, ist das Löschen der Abfrage in eine foreach-Schleife. – arrigonfr

Antwort

38

Viele Möglichkeiten zum Löschen von Datensätzen in Laravel 4.1

1) Wenn Sie Datensätze aus der Datenbank löschen möchten, rufen Sie einfach die Löschmethode:

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

2) Möchten Sie einen Datensatz schnell durch seine ID löschen? Kein Problem. Übergeben Sie einfach die ID in die Löschmethode:

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

3) Wenn Sie mehrere Datensätze von id löschen möchten, ihre IDs in einem Array übergeben - verwenden Sie die folgende

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

4) Wenn Sie mehrere Datensätze von id auf einmal, vorbei an einer Reihe von Benutzern löschen möchten - verwenden Sie die folgende

 //(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)

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

6) Natürlich ein bestehendes Modell von Key

löschen, können Sie auch eine Löschabfrage auf einer Reihe von Modellen laufen:

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

was ist, wenn ich aus mehreren Tabellen irgendwelche Hilfe bitte löschen muss –

Verwandte Themen