TP6查询数据库菜单及判断是否含有子菜单

97 阅读1分钟

数据库表设计

bb88a32c-94c0-4c88-a849-6aa6eecfa771.png

TP6实现

<?php

namespace app\controller;
use app\BaseController;
use think\facade\View;
use think\facade\Db;
use think\facade\Request;
use think\facade\Session;
use think\facade\Cookie;


class Index extends BaseController
{
    public function index()
    {
        //显示菜单及子菜单判断
        $menu = DB::name("class")->where("father_id", 0)->select()->toArray();
        $father_nums = count($menu);
        for ($i = 0; $i < $father_nums; $i++) {
            $nums = DB::name("class")->where("father_id", $menu[$i]['id'])->select();
            if (count($nums) > 0) {
                $menu[$i]['has_child'] = 1;
            }
        }
        dump($menu);
        View::assign("menu", $menu);
        return View::fetch();
    }

}

注意:

  1. 先引入DB类,才可以操作数据库
  2. 查询的结果默认为对象格式,不可以进行数组操作,需要toArray转换成数组
  3. 对父菜单进行for循环,如果存在以当前父菜单的ID作为father_id的列,则认为存在子菜单
  4. 存在子菜单,添加'has_child'字段进行标注
  5. dump进行输出测试