欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ThinkPHP框架:数据库链表查询和导航渲染(导航数据递归生成)

程序员文章站 2022-03-06 12:36:33
...

一.ThinkPHP框架常见的数据库查询方法

1.ThinkPHP框架自带数据库操作Db类
2.Db类中常见的方法(可以链式操作):

  • table()或name():选择要操作的表
  • where():查询条件
    • 常见的查询条件:like|in|between|
  • select():返回数据集对象,可以toArray()转成数组
  • find();查询单个返回数组,查询失败返回null,用findorEmpty()查询失败返回空数组
  • value():返回指定值,查询不到返回null
  • column():第一位参数指定某列,第二个参数指定位索引
  • order():指定以某字段排序
    • 第一个参数为字段,第二个参数为desc或者asc,默认asc
  • field():以字符型市场传入要过滤的字段
  • view($table,字段,连表条件)连表查询,也可以指定第四个参数:LEFT,RIGHT等
  • paginate($num);分页查询返回每页显示的条数,在世视图中可以直接渲染分页{paginate($num)|raw}
  • rander();单独获取分页;视图中可以直接渲染分页{rander()|raw}
  • total();获得数据总条目数量

二.获取数据生成递归导航数据

1.一般表通过id和pid两字段关联导航的分级

  1. //把数据根据id和pid生成递归导航目录
  2. public function rules($res,$pid=0){
  3. $arr=[];
  4. foreach($res as $v){
  5. // dd($v['pid'],$pid);
  6. if($v['pid']==$pid){
  7. $v['child']=self::rules($res,$v['id']);
  8. $arr[]=$v;
  9. }
  10. }
  11. return $arr;
  12. }

2.视图模板语法

  • 变量引用{$name}
  • {volist name=”name” id=”item”}循环内容{/volist}
  • {if 条件 /}渲染内容{else /}渲染内容{/if}