码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-08-03 18:10:02      阅读:896      评论:0      收藏:0      [点我收藏+]

标签:tool   glob   getch   getchild   oba   assign   .com   有关   imp   

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

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

文章分类表(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中怎么访问分类及子分类下面的文章

标签:tool   glob   getch   getchild   oba   assign   .com   有关   imp   

原文地址:http://www.cnblogs.com/shenzikun1314/p/7281090.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!