首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

具有多态关系的laravel 8 ->add评论和回复

Laravel 8 是一种流行的开源PHP框架,它支持多态关系,可以轻松地实现评论和回复功能。

多态关系是面向对象编程中的一个概念,它允许一个对象在不同的上下文中以不同的方式进行操作。在 Laravel 8 中,多态关系可以用于实现评论和回复的功能。具体来说,可以使用 Laravel 的多态关联功能来建立评论和回复之间的关系。

在 Laravel 8 中,可以通过创建适当的数据库表和模型来实现评论和回复功能。首先,需要创建一个 comments 表来存储评论的信息,该表可以包含字段如下:

  • id: 评论的唯一标识符
  • content: 评论的内容
  • commentable_id: 多态关联的对象的唯一标识符
  • commentable_type: 多态关联的对象的类型

接下来,可以创建一个 Comment 模型来表示评论,该模型可以定义与多态关联的关系。在 Comment 模型中,可以使用 Laravel 提供的 morphTo 方法来定义多态关联,示例如下:

代码语言:txt
复制
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    public function commentable()
    {
        return $this->morphTo();
    }
}

然后,可以在需要评论功能的模型中使用 morphMany 方法来建立与 Comment 模型的多态关联。例如,如果有一个 Post 模型需要支持评论功能,可以在 Post 模型中添加如下代码:

代码语言:txt
复制
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    public function comments()
    {
        return $this->morphMany(Comment::class, 'commentable');
    }
}

现在,可以通过调用 $post->comments 来获取与该 Post 对象关联的所有评论。

对于回复功能,可以使用类似的方法来实现。可以创建一个 replies 表来存储回复的信息,该表可以包含字段如下:

  • id: 回复的唯一标识符
  • content: 回复的内容
  • commentable_id: 多态关联的对象的唯一标识符
  • commentable_type: 多态关联的对象的类型

然后,可以创建一个 Reply 模型来表示回复,该模型也可以定义与多态关联的关系。在 Reply 模型中,可以使用 morphTo 方法来定义多态关联。

最后,可以在 Comment 模型中添加一个方法来获取与该评论关联的所有回复。例如:

代码语言:txt
复制
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    public function replies()
    {
        return $this->morphMany(Reply::class, 'commentable');
    }
}

通过调用 $comment->replies 可以获取与该评论关联的所有回复。

以上是使用 Laravel 8 实现具有多态关系的评论和回复功能的基本步骤。在实际应用中,可以根据具体需求进行进一步的扩展和定制。

腾讯云提供了多种云计算产品和服务,可以用于支持 Laravel 8 的开发和部署。例如,可以使用腾讯云的云服务器(CVM)来托管 Laravel 8 应用程序,使用云数据库(TencentDB)来存储数据,使用云存储(COS)来存储文件,使用云监控(Cloud Monitor)来监控应用程序的性能等等。具体的产品介绍和链接地址可以参考腾讯云官方网站。

请注意,本回答仅针对 Laravel 8 中具有多态关系的评论和回复功能的实现,并不涉及其他云计算品牌商的相关产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

基于 Laravel 用户动态模块开发

几乎所有的社区应用都有用户动态这个部分,用户可以通过好友动态获能取到更多感兴趣内容,从而提高社区活跃度用户粘性。它实现相对来讲比普通内容发布要复杂一些,主要体现在内容多样性上。...里 morph relation, 多态关联。...新版网站,其中也有用户动态,举例: xxx 发布了讨论 《请问大家怎么使用 xxx》 xxx 评论了 xxx 的话题 《请问大家怎么使用 xxx》 xxx 回复了 xxx 评论 “我是按照文档上 ....你会发现,基本上每种动态写法都不一样,所以我们还需要记录一个 “事件类型” ,比如 “关注”、 “发布”、“回复”、“购买”。...关于好友动态部分实现,根据你应用量级,以及好友关系存储各有不同,大家自己集思广益即可,大部分都是先查好友关系再查动态,关联查询也可以,自己实现吧。

1.5K30

Laravel5.1 框架模型多态关联用法实例分析

本文实例讲述了Laravel5.1 框架模型多态关联用法。分享给大家供大家参考,具体如下: 什么是多态关联?...一个例子你就明白了:好比如说评论 它可以属于视频类 也可以属于文章类,当有个需求是 从评论表中取到视频类数据,这就需要用到多态关联了。 简单一句话总结:一张表对应两张表。...1.4 编写多态关联 Article Video: public function comments() { /** * 第二个参数:如果你前缀是item_ 那么就写item...$comment- item_type; } }); 更多关于Laravel相关内容感兴趣读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程...》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架PHP程序设计有所帮助。

46330

Laravel学习记录--Model

- 多态一对 - 多态一对多 - 多态多对 关联查询 继承:ILLuminate\Database\Eloquent\Model model与表名关系 表名去掉...单看这句话有点云里雾里 举个例子,在一个场景你系统用户可以对文章和视频评论,使用多态关联,你只需用一个评论表(comments)即可同时满足存储视频,文章评论。...学习了一对一多态关联,一对多多态关联相对简单,实际上原理跟一对一多态差不多,只是这里变成了一对多而已 下面举例说明,以评论来说,文章跟评论关系是一对多,可能我们系统里面 还会针对某个模块设置评论窗口...,如用户信息评论(可能例子不恰当,反正体先多态关联)这两种评论结构是一样,没接触这个之前我们可能会创建两种评论表分别存储文章评论用户信息评论,但多态关联解决了这一问题,我们只需键一张评论表,利用这张表存储两种评论...(根据文章或用户查询对应评论信息) 由于文章/用户跟评论关系是一对多,所以需要使用morphMany方法 morphMany($related,$name,$type,$id,$localKey)

13.4K20

orm 系列 之 Eloquent演化历程2

tag v1.1.1版本eloquent, git co v1.1.1 此版本是v4.0.0之前一个版本,从这以后laravel会以组件形式组织各个功能,让我们分析下v1.1.1版本,目前具有哪些功能...本文最后讲下Eloquent中新增对象之间关系多态关系,以下内容摘自[ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系 表结构 多态关联允许一个模型在单个关联下属于多个不同模型...例如,假设应用用户既可以对文章进行评论也可以对视频进行评论,使用多态关联,你可以在这两种场景下使用单个comments表,首先,让我们看看构建这种关联关系需要表结构: posts id - integer...SchemaQuery,同时DatabaseMangerEloquent还处理协作关系,Eloquent负责领域类打理,最后ConnectionFactory则打点着所有的Connection,提供基础功能...参考 [ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系

2.4K30

详解Laravel设置多态关系模型别名方式

作为 Laravel 重度使用者肯定都对多态关系不默生,以官方文档为例,文章有标签,视频有标签,那么文章和视频这些模型与标签模型关系就是 多态多对多(Many To Many (Polymorphic...)) 如果我们给 ID 为 1 文章打上两个标签,数据库标签关系存储结果就是这样子: select * from taggables; +--------+-------------+---...思路来源 我尝试跟踪了一遍源码,发现模型中有一个方法 getMorphClass ,多态关联时候,就是用它来取目标对象类型名称,默认返回类名: public function getMorphClass...》 我们目标是使用表名来做为关系类别名,那么在模型中如何获取表名呢,直接使用模型 getTable 即可,那么整个 trait 实现如下: app/Traits/UseTableNameAsMorphClass.php...总结 以上所述是小编给大家介绍Laravel设置多态关系模型别名方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家。在此也非常感谢大家对ZaLou.Cn网站支持!

1.9K21

Php Laravel框架 多表关系处理 之 Eloquent一对多关系处理

Php Laravel框架 多表关系处理 之 Eloquent一对多关系处理 本博文主要介绍 Laravel 框架中 Eloquent 对一对多关系处理以及在 Laravel Administrator...您数据库可能是彼此相关。比方,一篇博客文章可能有很多评论,或者一个订单与下订单用户相关。Eloquent 使得管理处理这些关系变得简单。...Laravel 提供了四种类型关系: –一对一 –一对多 –多对多 – 多态关系 一对多 一个一对多关系样例是一篇博客文章有很多评论或者一个课程有的多次分数信息等。...> 通过以上步骤处理。表与表之间一对多关系已确立, 以下将介绍在Laravel Administrato 后台中实现 下拉列表查询、绑定等应用 <?...演示样例中多次使用到 “学生姓名”、“课程名”,尽管他们存储在不同表中,但因为我们之前在 Model中已建立了它们之间 一对多关系,因此我们能够自由搭配组合 效果图例如以下: 10个Laravel4

2.1K40

Laravel 多态关系表单验证

相信大家使用 Laravel 开发应用时候都会有评论模块吧,而且我们通常将该模块设计为多态关系(如果你对这个关系还不明白的话,请赶紧打开 Laravel 文档数据库关系章节复习一遍吧!)。...一般来讲有两种方式,而我们通常用一种是从父模型使用关系写入,比如我们有一个 App\Thread 类,它里面对评论关系是这样: class Thread {    public function...comments() {            $this->morphToMany(Comment::class, 'commentable');    } } 然后我们写入评论时通常是这样...是不是简单很多,而且这样验证规则还能重用在其它同类多态关系地方哦。 这样就结束了么?没有! 我们上面的拓展验证规则写法没有感觉有些粗暴么?是时候规范一下了。...我们应该把所有的验证器都独立成一个类,放到 App\Validators 空间下,比如上面的关系验证我们可以叫做 App\Validators\PolyExistsValidator: <?

2.1K40

Laravel Eloquent 模型关联关系(下)

: 如果你想进一步过滤出文章标题评论都包含「Laravel学院」用户,可以在上述闭包函数中通过查询构建器进一步指定: $users = User::whereHas('posts', function...`deleted_at` is null ) and `email_verified_at` is not null 如果想要获取没有评论或没有标签文章,可以结合 doesntHave ...(31); $comment->content = 'Laravel学院致力于提供优质Laravel中文学习资源'; $comment->save(); 再次查看评论模型及对应文章模型数据,可以看到文章模型更新事件评论模型更新时间已经一致了...: 结语 好了,关于关联关系我们就介绍到这里,我们分了三篇篇幅来介绍 Eloquent 模型管理关系,回顾一下,主要包含以下内容: 七种关联关系定义:一对一、一对多、多对多、远层一对多、一对一多态关联...、一对多多态关联、多对多多态关联; 以上关联关系查询,主要包含两种方式:懒惰式加载渴求式加载; 基于关联查询构架复杂查询对查询结果进行过滤; 关联模型更新、插入删除操作。

19.5K30

从0开始做一个审批模块

所以这个需求方,可以定义为多态,说通俗一点就是通过类型 ID 来决定对象。不过这里我并没有定义为多态,因为应用里面不会出现需求方不确定类型场景,还是继续沿用 creator_id。...:『Laravel多态关系表单验证[3]』 。...结束语 以上就是我在设计开发 审批模块 所思所想,希望能够给大家多多少少带来一点帮助。可能流程不是那么规范,如果有更好设计模式流程,希望大家能够在评论区留言讨论。...References [1] 一对多多态关联: https://learnku.com/docs/laravel/8.x/eloquent-relationships/9407#one-to-many-polymorphic-relations...[2] Laravel: https://laravel.com/ [3] Laravel多态关系表单验证: https://learnku.com/articles/12449/form-validation-of-polymorphic-relationships-in-laravel

1.7K10

多态关联在数据库设计中应用和解决方案

随着数据量增长业务需求不断变化,数据库设计变得越来越复杂。其中,多态关联是一种常见数据关系,它可以使一个关系一个属性引用多个其他关系不同类型对象。...在本文中,我们将介绍多态关联在数据库设计中应用和解决方案,帮助读者更好地理解应用多态关联。一、多态关联定义应用多态关联是指一个关系一个属性可以引用多个其他关系不同类型对象。...在数据库设计中,多态关联可以用于以下场景:多个表具有相似的结构功能:如果多个表具有相似的结构功能,且需要将它们数据关联到同一个表中,那么使用多态关联是一个不错选择。...数据需要支持未来扩展变更:如果数据需要支持未来扩展变更,那么使用多态关联可以提高数据模型灵活性可扩展性。如果需要添加新关联表,只需要在关联表中增加一条记录即可,而不需要修改主表结构。...,这个关联表包含了父表子表之间关系信息,同时还包含了子表类型信息。

47440

深入理解 Laravel Eloquent(三)——模型间关系(关联)

假如我们有两个模型:User Account,分别对应注册用户消费者,他们是一对一关系,那么如果我们要使用 Eloquent 提供一对一关系方法,表结构应该是这样: user: id ......pay: id ... ... user_id User Pay 具有一对多关系,换句话说就是一个 User 可以有多个 Pay,这样的话,只在 Pay 表中存在一个 `user_id` 字段即可。...多对多关系之前关系完全不一样,因为多对多关系可能出现很多冗余数据,用之前自带表存不下了。...其他关系 Eloquent 还提供 “远层一对多关联”、“多态关联” 多态多对多关联” 这另外三种用法,经过上面的学习,我们已经掌握了 Eloquent 模型间关系基本概念使用方法,剩下几种不常用方法就留到我们用到时候再自己探索吧...我们可以使用一个重要特性,关系预载入:http://laravel-china.org/docs/eloquent#eager-loading 直接上代码: $users = User::with('

2.6K30

第02步《番外篇》第1章认识计算机世界第5课

主要知识点 面向对象编程,英文是 Object Oriented Programming,简称 OOP,是一种通用软件设计思想,它将复杂事物关系从现实世界中抽离出来,以对象为单位设计其属性及方法,让不同对象之间发生作用联系...面向对象语言例如 C++、Java、Swift 、JavaScript 等,都有三个基本特征:封装、继承多态。...继承指子类继承父类属性及方法,达到复用与扩展目的。 多态指同一个对象引用,在不同情况下不同表现。...当对象引用是一个接口类型时,实现该接口不同实体类,它们同一方法因为实现不同,而具有不同表现;当对象引用是一个父类类型时,继承该父亲所有子类,它们同一方法如果重写了,也会有不同表现。...本步已开始接触到源码,在公众号艺述论回复10000下载所有源码,找到对应源码文件,尝试在终端中运行。所有源码都是作者亲自编写并测试过,都可以正常运行。

26130

Django中多态模型概念、使用场景以及如何实现多态模型

在Django开发中,经常遇到需要建立不同类型模型之间关系情况。而使用多态模型可以帮助我们更好地管理这些复杂关系。本文将介绍Django中多态模型概念、使用场景以及如何实现多态模型。...图片什么是多态模型?多态模型是指在一个模型中可以存储不同类型对象,并能够根据对象类型执行特定操作。通常,多态模型由一个父模型多个子模型组成,每个子模型都可以具有不同字段行为。...多态模型使用场景多态模型在实际应用中有广泛使用场景,如下所示:网站评论系统:评论可以针对文章、图片、视频等不同类型内容,使用多态模型可以轻松地存储不同类型评论并保持良好扩展性。...多态模型实现方法在Django中,我们可以使用两种方法来实现多态模型:抽象基类第三方库。方法一:抽象基类Django抽象基类是一种用于定义模型共享字段行为方式。...django-polymorphic 提供了一些额外功能,如过滤查询、获取所有子类等。总结多态模型是Django中一种强大工具,可以帮助我们管理复杂数据关系

24920

【愚公系列】2023年11月 通用职责分配原则(六)-多态原则(Polymorphism Principle)

欢迎 点赞✍评论⭐收藏前言GRASP(General Responsibility Assignment Software Patterns)通用职责分配软件模式是一组用于面向对象设计指导原则,旨在帮助设计者确定系统中各个类职责交互方式...具体而言,GRASP提供了以下指导原则:Creator:谁创建了对象,谁就应该负责管理对象之间关系。Controller:将系统控制逻辑集中到一个对象中。...Information Expert:将职责赋予那些最拥有所需信息对象。High Cohesion:将具有高内聚性职责分配给同一个类。Low Coupling:尽可能减少对象之间相互依赖。...GRASP提供了一些通用、可重用模式,可以帮助设计者更好地理解应用面向对象设计原则。与GOF模式相比,GRASP更注重职责分配交互方式设计,而不是具体模式实现。...同时,多态原则也可以提高代码灵活性可扩展性,减少代码耦合度复杂度。

14111

如何选择PHP框架?

Yii Yii是在2008年由Qiang Xue创建。Yii是一个安全,快速高效应用/网站开发框架。Yii采用Composer,是PHP依赖管理工具,用来处理不同依赖关系安装。...php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?...说到选择最好框架来编写高性能应用程序代码,Yii作为最快PHP框架,成为突出选择。 ? Laravel性能是非常值得商榷。它是最慢,但这有什么关系呢?...年最流行框架 为设计者提供支持包管理 出色完成单元测试 提供丰富包,用于扩展框架功能 具有一个出色社区,提供丰富学习资源 结束语 在Symfony 、LaravelYii三者较量中,这三个PHP...网站上开发人员在使用Symfony, Yii Laravel来开发项目。他们在直播过程中还可以通过Skype与观众沟通。关注他们直播,提出你问题,并得到实时回复。 ?

7.7K90

java学习之路:26.方法重载,多态,抽象类与接口

多态是出现在具有继承关系两个类对象之间,所以它不像方法重载(发生在一个类中)在编译期间发生(也就是确定下来),而是在运行期间发生(确定下来)。...比较经典多态实例是: 有一个Animal类,它有Cat,Dog两个子类,在Animal中有个say方法,当Cat调用这个方法时候输出是“小猫喵喵喵”,当Dog调用这个方法时,输出是“小狗汪汪汪...”,这就是Java多态实现。...在接口中定义任何字段都自动是staticfinal。...Java不允许多重继承,但是可以使用多个接口: class 类名 implements 接口 1,接口 2,接口 3, 若有错误,欢迎指正批评,欢迎评论

36641

Laravel 项目中使用 webpack-encore

看过我之前写过博客应该知道我一直是 laravel-mix 死忠粉,有好几篇文章都是关于它。每每提到 laravel-mix 时更是不吝溢美之词。...安装依赖 首先当然是安装依赖 yarn add -D @symfony/webpack-encore 需要注意是,webpack-encore 没有像 laravel-mix 那样在自己内部依赖 vue-tempplate-compiler...vendor.js app.js 了。...去 github 上提 issue,维护成员基本上都很友善耐心,几个小时就会有回复。这种态度也让我对它更加放心了,相信它会折腾得越来越好。...相比于 laravel-mi,encore API 以及一些默认配置方面考虑得更为科学全面,想要配置 vue-loader 或者 ts-loader 之类,只需要调用相应方法。

2.1K20

Laravel利用redis定时任务实现活跃用户统计

最近在SummerLaravel教程-Web开发实战进阶》学到很多东西,以前只会看文档,大概了解Laravel内容而在实际运用中确不知道该怎样做,碰到一个需求不会立马联想到“这个东西可以用...实现...不是有句话”实践是检验真理唯一标准“ 所以学习编程还是要多实践多写项目,不然就像我一样拿到东西不知道怎样运用 废话不多,今天分享一下利用redis定时任务实现活跃用户统计 如果你对redis定时任务不了解建议去补一下...linuxredis 以及laravel任务调度 活跃用户算法 我们规定系统每个小时,统计最近7天用户所发表帖子数评论数。...用户发布帖子+4分 用户发布评论+1分 最后计算所有人得分进行倒序排序 取前八个用户显示在主页活跃用户栏 类似 需求已经明确我们开始编写代码,不过在编写代码之前我们需要.env中指定缓存驱动为redis...($pass_days)内,有发表过回复用户 // 并且同时取出用户此段时间内发布回复数量 $reply_users = Reply::query()->select

89320
领券