この記事では主に、ThinkPHP での列の一括削除の実装を参考のために共有します。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。
達成する必要があるのは次のような効果です:
バッチ削除ボタンを選択した後、ページのすべての列を選択できます。これはフロントエンドページの実装です。ここでは、バッチ削除機能のトピックに直接進みましょう。
1. フロントエンド ページにも小さな点があります。つまり、選択ボックスの名前の値には ID の配列を割り当てる必要があり、値の値は列の ID です。
2. コントローラーに別のバッチ削除メソッドを記述します
public function privilege_bdel(){ $ids = I('ids'); $pri = D('privilege'); $ids = implode(',', $ids); if($ids){ if($pri->delete($ids)){ $this->success('批量删除栏目成功!',U('Privilege/privilege_lst')); }else{ $this->error('批量删除栏目失败,请重试!'); } }else{ $this->error('未选中任何内容,请重试!'); } }
ここでは、削除操作を直接実行できるように、渡された ID 配列をコンマ区切りの文字列に変換する必要があります。 。
これは、オプションのダンプの結果であり、options[where][id] が配列である場合、削除が単一の削除であるか、一括削除であるかを判断するための基準にもなります。実行されているのはバッチでの削除であり、それ以外の場合は個別に削除されます。
3. モデル内の削除前のコンストラクターの変更
public function _before_delete($options){ //批量删除 if(is_array($options['where']['id'])){ $arr = explode(',', $options['where']['id'][1]); $sonpri = array(); foreach ($arr as $k => $v) { $sonpri2 = $this->childid($v); $sonpri = array_merge($sonpri,$sonpri2); } $sonpri = array_unique($sonpri); $chilrenids = implode(',', $sonpri); }else{//单个删除 $chilrenids =$this->childid($options['where']['id']); $chilrenids = implode(',', $chilrenids); } if($chilrenids){ $this->execute("delete from ed_privilege where id in($chilrenids)"); } }
ここで一括削除のコードを書きます(単一の削除については以前に書いたので再度言及しません)
渡された文字列をカンマの配列形式に変換します空の配列 $sonpri を作成し、それを foreach で走査します。ここでは、まずすべてのサブ列 ID を見つけて (childid 関数が使用されます)、それらを $sonpri2 配列に保存します。 $sonpri と $sonpri2 を配列にマージし、array_merge() 関数を使用すると、すべてのサブカラムの ID を取得できます。ただし、取得した ID グループには重複する ID が多数存在します。ここで重複排除操作を実行する必要がある場合は、array_unique() 関数を使用します。最後に、配列を再度分割して ID 文字列を取得し、それを削除すれば完了です。
関連する推奨事項:
以上がThinkPH は列の一括削除のためのコード共有を実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。