Thinkphp关联模型使用
1.需求描述
首页文章列表,需要同时获取文章的点赞和被关注数,同时如果被当前用户点赞或关注了会显示相应小图标进行区别。图示如下:
2.解决方案
数据库设计:
文章对应Article表,其中包括收藏数字段fav,点赞数字段zan
中间表user_fav,user_zan分别表示某一用户对某篇文章的点赞与收藏, 其中包括userid,usertype,article_id等字段
TP5代码实现部分:
框架用的TP5,参考开发手册其中关联模型部分,在article模型中增加userFav和userZan方法
public function userFav()
{
return $this->hasMany('UserFav','article_id')->field('userid');
} public function userZan()
{
return $this->hasMany('UserZan','article_id')->field('userid');
}
Controller中index方法显示文章列表
public function index($page=1)
{
// $this->articlemodel = new Article();
// $list = $this->articlemodel->where('schoolid',$user['schoolid'])->where('classid',$user['classid'])->group('create_time')->select();
$list = $this->articlemodel->withCount(['userzan'=>function($query){
$query->where('userid',cookie('userid'))->where('usertype',cookie('usertype'));
}])->order('zan desc,is_top desc,is_recommend desc,id desc')->paginate(5,false,['page' => $page]); $this->assign('list', $list);
return $this->fetch();
}
View中获取点赞数关注数同时判断如果当前用户点赞,部分代码
{volist name="list" id="vo"}
<div class="in_parent">
<img src="{$vo['photo'][0]}" data-id="{$vo['id']}">
<div class="in_par_con">
<p>{$vo.title}</p>
</div>
<div class="in_par_con">
{foreach :explode(',',$vo['tags']) as $tag}
<span>{$tag}</span>
{/foreach}
</div>
<div class="in_per">
<div class="in_per_lf fl">
<img src="__H5IMAGES__/pic.png" class="fl"/>
<div class="fl ml5 mt10">{$vo.author}<p class="gray">{php}echo date('Y-m-d',strtotime($vo['create_time']));{/php}</p></div>
</div>
<div class="in_per_rt fr">
<span class="gray fr mt30 ml3 care-val">收藏 {$vo.fav}</span>
<div class="fr mt30 ml3 care{eq name='$vo.userfav_count' value='1'} care01{/eq}" data-id="{$vo.id}"></div>
<span class="gray fr mt30 ml3 zan-val">{$vo.zan}</span>
<div class="fr mt30 ml3 zan{eq name='$vo.userzan_count' value='1'} zan01{/eq}" data-id="{$vo.id}"></div>
</div>
<div class="clear"></div>
</div>
</div>
{/volist}
php用的时间不长,用的不对的地方望不吝赐教
Thinkphp关联模型使用的更多相关文章
- ThinkPHP 关联模型(二十)
原文:ThinkPHP 关联模型(二十) ThinkPHP关联模型 两表关联查询:Message 和 user 关联条件uid(参考手册:模型->关联模型) 步骤: 一:创建Message表 ...
- ThinkPHP关联模型详解
在ThinkPHP中,关联模型更类似一种mysql中的外键约束,但是外键约束更加安全,缺点却是在写sql语句的时候不方便,ThinkPHP很好得解决了这个问题.但是很多人不动关联模型的意思.现在就写个 ...
- ThinkPHP关联模型如何关联非主键
ThinkPHP关联模型默认是主键外键关联 官方并没有提供相关文档 如何实现非主键与非主键间之间的关联 <?php namespace Admin\Model; use Think\Model\ ...
- thinkphp 关联模型配置代码
<?php /** * 公司与部门关联模型 */ class CompanyRelationModel extends RelationModel{ //主表名称 protected $tabl ...
- ThinkPHP 关联模型中查询某条记录的父级(非查询子级)
数据表 id cat_name cat_pid 76 手机.数码 0 84 手机配件 76 86 蓝牙耳机 84 从属关 ...
- ThinkPHP - 关联模型 - 多对多
表结构: 映射关系: UserRelationModel会取UserRelation为表名称.所以要自定义表名称: //定义主表名称protected $tableName = 'User'; < ...
- Thinkphp 关联模型和试图模型区别
关联模型主要在多表操作时使用,比如 user表,user_role表,role表 user_role字段:uid,rid,它作为中间表,负责将user和role之间的,1对1,1对多,多对多的关系进行 ...
- Thinkphp 关联模型
1.定义关联模型 2.使用关联模型 D('BlogRelation')->relation(true)->add($data);
- ThinkPHP - 关联模型 - 一对多
使用之前,先引入文件夹,否则相应的功能不能实现. 如果对thinkPHP不精通,使用或开发的时候,最好直接使用完成版本的ThinkPHP. 关系模型定义: <?php /** * 继承自 Rel ...
随机推荐
- php异步学习(1)
1.为啥PHP需要异步操作? 一般来说PHP适用的场合是web页面展示等耗时比较短的任务,如果对于比较花时间的操作如resize图片.大数据导入.批量发送EDM.SMS等,就很容易出现操作超时情况.你 ...
- Java变量声明,实例化,问题
1.变量在输出前必须实例化,这是因为只有声明,没有分配内存空间 在这种情况下会报错 2.实例化后,尽管没有赋值,可能是默认了吧,但也不会输出null,什么也没有输出 上面的理解可能是错的,a赋值了,就 ...
- HDU 5229 ZCC loves strings 博弈
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5229 bc:http://bestcoder.hdu.edu.cn/contests/con ...
- Ubuntu命令行安装显卡驱动
1. sudo apt-et purge nvidia* 卸载原有驱动 2. sudo add-apt-repository ppa:graphics-drivers sudo apt-get upd ...
- 微信小程序组件 360
data: { nums: 1, start: '', // change:'' // 上一部记忆数据 mid: '' }, mytouchmove: function (e) { var start ...
- angularjs 指令间相互调用
<div ng-app="app"> <div ng-controller="myctl"> <button superman s ...
- DIH增量、定时导入并检索数据--转载
原文地址:http://www.ifunit.com/984/solr%E5%AD%A6%E4%B9%A0%EF%BC%88%E4%BA%94%EF%BC%89dih%E5%A2%9E%E9%87%8 ...
- MySQL主键和外键使用及说明
摘自网上一个经典的例子:大哥和小弟 一.外键约束 MySQL通过外键约束来保证表与表之间的数据的完整性和准确性. 外键的使用条件: 1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说 ...
- 【比赛】HNOI2018 道路
这题很考思维啊,考验我们能否快速从省选难度跳转到普及难度 考试的时候真的想得太多,觉得省选不可能这么简单吧,然后就打脸 设 \(f[i][j][x]\) 表示从根到 \(x\) 号点,有 \(i\) ...
- 贪心(qwq)习题题解
贪心(qwq)习题题解 SCOI 题解 [ SCOI2016 美味 ] 假设已经确定了前i位,那么答案ans一定属于一个区间. 从高位往低位贪心,每次区间查找是否存在使此位答案为1的值. 比如6位数确 ...