laravel点赞和评论模块的业务逻辑处理

本文探讨了在laravel中实现文章点赞和评论的业务逻辑。通过模型关联,详细阐述了文章表、评论表和点赞表之间的关系,包括表结构和对应的模型关联方法,以帮助开发者快速清晰地开发相关功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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');
    }
}

关于这块实现的逻辑就介绍到这边 觉的有用的就点个赞吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值