laravel点赞和评论模块的业务逻辑处理
标签: laravel点赞评论
需求:某个用户给一片文章进行点赞或者取消点赞以及评论之后 回到文章的列表页显示 点赞的数量和评论的数量
这个功能的实现 在laravel中 我们可以利用模型关联的思路去开发会更加的快速、清晰。
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、文章表, 评论表, 点赞表, 之间的关系?
1.表结构
评论表 comments (模型层名字 Comment)
文章表 posts (模型层名字 Post)
点赞表 zans (模型层名字 Zan)
2.表之间的模型关联
首先是评论表的模型 Comment.php
多个评论作用于一个文章 因此是反向的多对一 也就是belongsto
多个评论来自于同一个用户 因此也是反向的多对一 也就是belongsto
所以建立以下关系
<?php
namespace App;
use Illuminate\Database\Eloquent\Model as BaseModel;
class Comment extends BaseModel
{
//一对多的反向 多个评论属于文章
public function post(){
return $this->belongsTo('App\Post','post_id','id');
}
//一对多的反向 多个评论属于用户
public function user(){
return $this->belongsTo('App\user','user_id','id');
}
}
接下来是文章模型层Post.php
多篇文章来自同一个用户 因此是反向的一对多 也就是belongsTo
一篇文章有多个评论 因此是正向的一对多 也就是hasMany
一篇文章有多个赞 因此是正向的一对多 也就是hasMany
一个用户对一篇文章只能一个赞 因此是一对一 也就是hasOne
所以建立以下关系
代码如下(示例):
<?php
namespace App;
/**
* 文章模型
*/
use App\Model;
class Post extends Model
{
//
protected $table = "posts";
protected $fillable = ['title','content','user_id'];
//关联用户 文章属于用户 文章的user_id关联用户的id
public function user(){
return $this->belongsTo('App\User','user_id','id');
}
//文章有多个评论 一对多 获取文章的所有评论 按照发布时间 倒叙显示
public function comments(){
return $this->hasMany('App\Comment','post_id','id')->orderBy('created_at','desc');
}
// 关联赞 一篇文章 一个用户只能一个赞 判断某个用户对文章是否有赞
public function zan($user_id){
return $this->hasOne('App\Zan')->where('user_id',$user_id);
}
//获取文章的所有赞 一篇文章有多个赞
public function zans(){
return $this->hasMany('App\Zan');
}
}
关于这块实现的逻辑就介绍到这边 觉的有用的就点个赞吧