分類添加方法
模型文件中的方法
//創建一個靜態方法,獲取分類 /** * Undocumented function * * @param integer $pid 當前父ID * @param array $result 引用返回值 * @param integer $blank 設置分類之間的顯示提示 就是空格 * @return void */ public static function getCate($pid = 0, &$result = [], $blank = 0) //引用傳參 & { $res = self::all(['pid' => $pid]); // 自定義分類名稱前面的提示 $blank += 2; // 遍歷分類表 foreach ($res as $key => $value) { // 自定義分類名稱的顯示格式 $cate_name = '|--' . $value->cate_name; $value->cate_name = str_repeat(' ', $blank) . $cate_name; // 將查詢到的結果保存到$result中 $result[] = $value; // 將當前記錄的id,作為下一級分類的父id,繼續遞歸調用本方法 self::getCate($value->id, $result, $blank); } // 返回查詢結果,調用結果集類make方法打包當前結果,轉為二維數組返回 return Collection::make($result)->toArray(); }
無限級刪除
控制器內的
// 刪除 // 在執行del方法之前 先執行delson protected $beforeActionList = [ 'delson' => ['only' => 'del'] ]; // 刪除父級 public function del() { $id = input('id'); $res = model('Cate')->where('id', $id)->delete(); if ($res) { $this->success('刪除成功!', 'admin/cate/cateList'); } else { $this->error('刪除失敗!'); } } // 刪除下級分類 public function delson() { // 獲取當前id $cateid = input('id'); // 判斷刪除子類 $res = model('Cate')::delnext($cateid); //調用模型中的方法 查找子類 // 將當前刪除的id存放到子類id集合中 $res[] = $cateid; // 刪除欄目 $result = model('Cate')->destroy($res); if ($result) { $this->success('刪除成功!', 'admin/cate/cateList'); } else { $this->error('刪除失敗!'); } }
模型中的方法
1 // 刪除操作 無限級查找子類 2 /** 3 * Undocumented function 4 * 5 * @param [type] $cateid //當前刪除的id 6 * @param array $result //靜態數組集合 7 * @return void 8 */ 9 public static function delnext($cateid, &$result = []) 10 { 11 // 查詢所有數據 12 $data = self::select(); //查詢所有父id為當前id的子類 13 foreach ($data as $v) { 14 if ($v['pid'] == $cateid) { 15 $result[] = $v['id']; //如果有,將這些數據的id放入數組中 16 self::delnext($v['id'], $result); //根據這些數據的id繼續調用自身 17 } 18 } 19 return $result; 20 }
