tp5 分類無限級查詢和刪除


分類添加方法

模型文件中的方法

    //創建一個靜態方法,獲取分類
    /**
     * 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('&nbsp', $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     }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM