Ich habe vor einiger Zeit einen Aufsatz über das Löschen von Spalten veröffentlicht. Die damals implementierte Funktion bestand darin, eine Information zu löschen. Dieses Mal werde ich das Löschen von Spalten implementieren.
Was wir erreichen müssen, ist der folgende Effekt:
Nachdem Sie die Schaltfläche „Batch löschen“ ausgewählt haben, können Sie alle Spalten auswählen Dies ist die Implementierung der Frontend-Seite. Ich werde hier nicht näher auf das Thema eingehen: die Batch-Löschfunktion.
1. Hier auf der Front-End-Seite gibt es auch einen kleinen Punkt: Dem Namenswert des Auswahlfelds sollte ein ID-Array zugewiesen werden, und der Wertwert ist die ID der Spalte.
2. Wir schreiben eine separate Batch-Löschmethode in den Controller
1 public function privilege_bdel(){ 2 $ids = I('ids'); 3 $pri = D('privilege'); 4 $ids = implode(',', $ids); 5 if($ids){ 6 if($pri->delete($ids)){ 7 $this->success('批量删除栏目成功!',U('Privilege/privilege_lst')); 8 }else{ 9 $this->error('批量删除栏目失败,请重试!');10 }11 }else{12 $this->error('未选中任何内容,请重试!');13 }14 }
Hier übergeben wir das ID-Array wird in eine durch Kommas getrennte Zeichenfolge wie: 1, 2, 3 konvertiert, sodass der Löschvorgang direkt ausgeführt werden kann.
Dies ist das Ergebnis unserer Dump-Optionen. Dies ist auch die Grundlage für die Beurteilung, ob es sich bei der Löschung um eine Einzellöschung oder eine Stapellöschung handelt. [id] Wenn es sich um ein Array handelt, bedeutet dies, dass eine Stapellöschung durchgeführt wird, andernfalls handelt es sich um eine einzelne Löschung.
3. Änderung des Konstruktors vor dem Löschen im Modell
1 public function _before_delete($options){ 2 //批量删除 3 if(is_array($options['where']['id'])){ 4 $arr = explode(',', $options['where']['id'][1]); 5 $sonpri = array(); 6 foreach ($arr as $k => $v) { 7 $sonpri2 = $this->childid($v); 8 $sonpri = array_merge($sonpri,$sonpri2); 9 }10 $sonpri = array_unique($sonpri);11 $chilrenids = implode(',', $sonpri);12 }else{//单个删除13 $chilrenids =$this->childid($options['where']['id']);14 $chilrenids = implode(',', $chilrenids);15 }16 if($chilrenids){17 $this->execute("delete from ed_privilege where id in($chilrenids)");18 }19 }
Hier schreiben wir den Code für die Stapellöschung (Einzellöschung wurde bereits geschrieben, nicht erwähnt). erneut)
Konvertieren Sie die übergebene Zeichenfolge in ein Array ohne Kommas und speichern Sie sie in $arr. Erstellen Sie ein leeres Array $sonpri und durchlaufen Sie es dann mit foreach. Suchen Sie hier zunächst alle Unterspalten-IDs ( Will Verwenden Sie die Funktion childid), speichern Sie es im Array $sonpri2, führen Sie dann $sonpri und $sonpri2 zu einem Array zusammen und verwenden Sie zum Vervollständigen die Funktion array_merge(), sodass wir die IDs aller Unterspalten außer der erhalten können id wir haben erhalten In der Gruppe wird es viele doppelte IDs geben, daher müssen wir hier auch einen Deduplizierungsvorgang mit der Funktion array_unique() durchführen. Zum Schluss teilen Sie das Array erneut auf, um die ID-Zeichenfolge zu erhalten, löschen Sie sie dann und fertig.
Das obige ist der detaillierte Inhalt vonWie lösche ich eine Spalte in ThinkPHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!