thinkphp 博客相关文章功能怎么实现

 我来答
龙氏风采
2016-08-02 · 知道合伙人互联网行家
龙氏风采
知道合伙人互联网行家
采纳数:5849 获赞数:12817
从事互联网运营推广,5年以上互联网运营推广经验,丰富的实战经

向TA提问 私信TA
展开全部
准备两张关联的表wb_tagged和wb_news,具体数据如下:

01
-- ----------------------------
02
-- Table structure for `wb_tagged`
03
-- ----------------------------
04
DROP TABLE IF EXISTS `wb_tagged`;
05
CREATE TABLE `wb_tagged` (
06
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
07
`recordId` int(11) unsigned NOT NULL,
08
`tagId` int(11) NOT NULL,
09
`module` varchar(25) NOT NULL,
10
PRIMARY KEY (`id`),
11
KEY `module` (`module`)
12
) ENGINE=MyISAM CHARSET=utf8;
13

14
-- ----------------------------
15
-- Table structure for `wb_news`
16
-- ----------------------------
17
DROP TABLE IF EXISTS `wb_news`;
18
CREATE TABLE `wb_news` (
19
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
20
`title` varchar(80) NOT NULL DEFAULT '',
21
`status` tinyint(1) NOT NULL DEFAULT '0',
22
PRIMARY KEY (`id`)
23
) ENGINE=MyISAM CHARSET=utf8;
注:wb_news表的ID关联wb_tagged表的recordId

接下来定义上面两张表的视图模型RelaNewsView,代码如下:

01
<?php
02
class RelaNewsViewModel extends ViewModel {
03

04
public $viewFields = array(
05

06
'News'=>array('id','title','status'),//根据需求筛选news表的字段
07

08
'Tagged'=>array('tagId','recordId','_on'=>'Tagged.recordId=News.id'),
09
);
10
}
11
?>
上面模型代码中,news和tagged的关联点是“_on'=>'Tagged.recordId=News.id'”,这是一个查询条件,在模型定义好后,在后面的查询语句中就不用再重复写这个条件了。
视图模型定义好,下面是相关阅读的查询语句方法,当然你可以使用sql语句来查询,这里我喜欢用ThinkPHP的视图模型来实现。

view sourceprint?
01
/*
02
*相关阅读
03
*$ModelName:模型名称
04
*$rid:文章ID
05
*$ViewName 视图模型名称
06
*/
07
public function relaread($ModelName, $rid, $ViewName) {
08

09
$tagId=M('Tagged')->field('tagId')->where(array (
10
'module' => $ModelName,
11
'recordId' => trim($rid
12
)))->getField('tagId'); //获取标签tagId
13

14
if ($relalist !== false) {
15

16
$map['tagId'] = $tagId;
17
$map['status'] = 1;
18
$map['id'] = array (//过滤本篇文章在相关文章列表列出
19
'neq',
20
$rid
21
);
22
$map['recordId'] = array (
23
'neq',
24
$rid
25
);
26
$relalist = D($ViewName)->where($map)->order('id desc')->select();//相关阅读查询语句
27

28
return $relalist;//返回相关文章列表
29

30
}
31
}
32
//最后,我们调用使分配到模板read.html
33
public function read($ModelName) {
34
if (empty ($_GET['id'])) $this->error404();
35

36
$relalist=$this->relaread('News',$_GET['id'],'RelaNewsView')//在这里调用上面的relaread函数
37

38
$this->assign('relalist',$relalist );
39
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式