Maison > Article > développement back-end > Comment supprimer une colonne ?
Lorsque nous réalisons certains projets de sites Web, nous rencontrerons un tel problème. Supprimez une colonne, et cette colonne n'est pas la colonne du bas. C'est-à-dire que la colonne supprimée a des sous-colonnes. supprimez la commande column, vous devez supprimer la colonne et ses sous-colonnes ensemble, car nous ne pouvons pas laisser la sous-colonne être toujours affichée ou exister dans la base de données après la suppression de la colonne supérieure d'une classe. À ce stade, le problème. de suppression de colonne devient Coming.
Première image :
Il s'agit d'une simple page de gestion des droits. Sur l'image, les droits d'administrateur sont des droits de niveau supérieur, et la gestion des colonnes est. droits d'administrateur. Les sous-autorisations d'ajout de colonnes sont des sous-autorisations de gestion de colonnes. Pour une telle classification à trois niveaux, l'effet que nous souhaitons obtenir est : supprimer les autorisations d'administrateur, ainsi que toutes les autorisations de gestion et d'ajout de colonnes en dessous. sera supprimé en même temps ; supprimez les autorisations de gestion des colonnes, l'ajout de colonne sera également supprimé en même temps ; la suppression de l'autorisation d'ajout de colonne ne supprimera que la colonne elle-même.
La méthode d'implémentation suivante :
1. Il s'agit d'une simple méthode de suppression dans le contrôleur :
1 public function privilege_del(){2 $pri = D('privilege');3 $id = I('id');4 if($pri->delete($id)){5 $this->success('删除权限成功!',U('Privilege/privilege_lst'));6 }else{7 $this->error('删除权限失败!');8 }9 }
2. Nous pensons que le résultat de la suppression simultanée que nous souhaitons est en fait que lorsque nous choisissons de supprimer la colonne de niveau supérieur, le code nous aide d'abord à supprimer la sous-colonne la plus basse de la catégorie de colonne, puis supprime vers le haut dans l'ordre, et finalement la supprime. La colonne supérieure que nous avons sélectionnée, nous devons donc écrire une fonction pré-constructeur pour opera_before_delete($options) C'est la fonction qui nous est fournie par ThinkPHP. Son utilisation est d'exécuter cette fonction avant. nous exécutons la méthode delete, où $ options est l'information que nous voulons supprimer, en particulier un tableau à deux dimensions, le résultat est : Pour la valeur id, vous devez uniquement obtenir $options['where']['id'], mais notez que si où dans le tableau est également un tableau, cela signifie que nous sommes effectuer une suppression par lots, qui est également une seule La différence entre la suppression et la suppression par lots, j'écrirai un autre article pour la présenter brièvement. Cette fois, nous n'écrirons que sur la suppression unique.
Tout d'abord, écrivez une méthode childid pour obtenir toutes les données. Le $priid ici est l'identifiant de la colonne que nous avons transmis à supprimer1 public function childid($priid){2 $data = $this->select();3 return $this->getchildid($data,$priid);4 }
1 public function getchildid($data,$parentid){ 2 static $ret=array(); 3 foreach ($data as $k => $v) { 4 if($v['parentid']==$parentid){ 5 $ret[]=$v['id']; 6 $this->getchildid($data,$v['id']); 7 } 8 } 9 return $ret;10 }
1 public function _before_delete($options){2 //单个删除3 $chilrenids =$this->childid($options['where']['id']);4 $chilrenids = implode(',', $chilrenids); 5 if($chilrenids){6 $this->execute("delete from ed_privilege where id in($chilrenids)");7 }8 }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!