在项目开发过程中,我们可能会遇到在进入文章分类时需要遍历文章分类及文章子分类下面的文章的情况,具体解决步骤如下:

一、为便于理解,这里列出用到的表及字段

文章分类表(article_cate)

文章表(article)

其中 article 表的 cate_id 和 article_cate 表的 id 关联,article_cate 表中的 pid 是 id 的父级代号。

从表中可以看出,在 id 为 69 的文章分类下的 id 为 70 的子分类 下的 id 为 111 的 分类下 有一篇 cate_id 为111的文章

二、

(1)关系图如下

(2)要达到的效果就是

在控制器中写一个方法:能取到 与 文章分类有关联的所有分类 id , 及 id 为 69 下的所有 子 id 及 子 id 下的 二级子 id ,以此类推。代码如下:

 1  public function getChild($pid = 0){
2 global $article_cate;
3 $where = [
4 'pid' => $pid
5 ];
6
7 $datas = D('articleCate')->where($where)->select();
8 if(!empty($datas)){
9 foreach($datas as $data){
10 $article_cate[] = $data['id'];
11 $this->getChild($data['id']);
12 }
13 }
14 return $article_cate;
15 }
16 public function getC(){
17 global $article_cate;
18 $article_cate = [];
19
20 }

调用:

在 方法中传入 69 这个参数,就会返回与 id 为69 有关联的 id

因为是定义了全局变量,所以在调用的时候还要清一下全局变量,具体调用代码如下:

1  global $article_cate;
2 $article_cate = [];
3 $arr = $this->getChild(69);
4 $str = implode(',',$arr);
5 $str = $str.',69';
6 $mapzb2bt['cate_id'] = array('in',$str);
7 $zb2list = $arc->where($mapzb2bt)->order('a_id desc')->limit(6)->select();
8 $this->assign('zb2list',$zb2list);

其中拼了一个 69 是为了不进查询 id 为 69 下的所有子分类文章,还能查询 id 为69 下的分类文章

tp3.2中怎么访问分类及子分类下面的文章的更多相关文章

  1. destoon实现调用当前栏目分类及子分类和三级分类的方法

    调用当前栏目分类及子分类和三级分类是程序设计里常用的方法,本文就来详细讲述destoon实现调用当前栏目分类及子分类和三级分类的方法.具体操作如下: 在destoon中提供了如下的调用语句: 一级分类 ...

  2. wordpress获取当前分类的子分类

    1.现在function.php里面添加下面的代码 function get_category_root_id($cat) { $this_category = get_category($cat); ...

  3. Magento架构师的笔记-----Magento显示当前目录的父分类和子分类的分类名

    在Magento目录的分类页面里,希望在左侧导航获取到父分类和子分类,可以用以下方法:打开app/your_package/your_themes/template/catalog/navigatio ...

  4. 为wordpress的分类以及子分类指定固定模版

    在wordpress主题开发有多个不同分类页面时,通常使用category-{slug}.php的方式分别为每个分类开发不同的页面模版,slug为该分类的别名,并且无需其他设置仅仅以此命名即可. 但是 ...

  5. ThinkPHP分类查询(获取当前分类的子分类,获取父分类,下一级分类)

    获取指定分类的所有子分类ID号 //获取指定分类的所有子分类ID号 function getAllChildcateIds($categoryID){ //初始化ID数组 $array[] = $ca ...

  6. ecshop 商品分类页 取得当前分类下的子分类方法

    ecshop的商品分类页面category.php 下的分类,默认是取得所有同级父分类以及父类别的子分类.比如,我点击进入是A商品分类的页面 category.php?id=1,事实上 我只需要取得父 ...

  7. wordpress 获取分类ID,分类标题,分类描述,分类链接url函数

    get_cat_ID()    根据分类名称获取分类ID   ///// get_cat_name()    根据分类ID获取分类名称 用法:<?phpget_cat_ID( $cat_name ...

  8. ECSHOP:首页实现显示子分类商品,并实现点击Tab页切换分类商品

    例子:首页实现显示子分类商品,并实现点击Tab页切换分类商品(非AJAX) 开始:    1. 打开调试开关     文件地址:include/cls_template.php 找到 : functi ...

  9. JAVA中的访问修饰符和包

    一.JAVA访问修饰符 访问修饰符,用来控制类中成员的可见性 有四个访问修饰符,分别是:default,private,public,protected 1.default(默认):默认权限,不用写的 ...

随机推荐

  1. Python中的高级turtle(海龟)作图(续)

    四.填色 color 函数有三个参数.第一个参数指定有多少红色,第二个指定有多少绿色,第三个指定有多少蓝色.比如,要得到车子的亮红色,我们用 color(1,0,0),也就是让海龟用百分之百的红色画笔 ...

  2. Java如何停止线程?

    在Java编程中,如何停止线程? 以下示例演示了如何通过创建一个用户定义的方法run()方法和Timer类来停止线程. package com.yiibai; import java.util.Tim ...

  3. (原)SDL调试心得

    今天在项目中用到SDL2.0的库做视频显示用,在其中出现不少问题,这里一一记录下来,并作为以后的参考. 同一个窗口句柄在多次使用SDL_CreateWindowFrom和SDL_DestroyWind ...

  4. .NET WebAPI 正确抛出错误详细信息

    try { ... } catch (Exception e) { //在webapi中要想抛出异常必须这样抛出,否则之抛出一个默认500的异常 var resp = new HttpResponse ...

  5. PHP数组排序函数array_multisort()函数详解(一)

    PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序. 关联(string)键名保持不变,但数字键名会被重新索引. 输入数组被当成一个表的列并以 ...

  6. 多个table 相同col 的 设置相同width

    不同table 中的col 虽然设置了width 相同,但在IE8.9中长度仍不统一.经检查是不同table使用了不同的colspan ,删除colspan全部使用<td></td& ...

  7. 如何在Sql Server中读取最近一段时间的记录,比如取最近3天的或最近3个月的记录。

    如何在Sql Server中读取最近一段时间的记录,比如取最近3天的或最近3个月的记录. 主要用到DATEADD函数,下面是详细语句 取最近3天 select * from 表名where rq> ...

  8. 装饰模式(Decorator Pattern)--------结构型模式

    装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为.装饰模式降低类系统的耦合度,可以动态地增加或删除对象的职责,并使得需要装饰的具体构件类和具体装饰类可以独立变化,以便增加新的具体构件 ...

  9. Greenplum-cc-web监控软件安装时常见错误

     错误error: 1.no pg_hba.conf entry for host “::1”, user “gpmon”, database “gpperfmon”, SSL off 解决: vi ...

  10. 视觉单词模型、词袋模型BoW

    多用于图像检索.分类 3.2.1.4 视觉单词模型 视觉词袋(BoVW,Bag of Visual Words)模型,是“词袋”(BoW,Bag of Words)模型从自然语言处理与分析领域向图像处 ...