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

在Laravel中通过多态关系获取字段总和

在Laravel中,通过多态关系获取字段总和可以通过使用多态关系和聚合函数来实现。多态关系是指一个模型可以属于多个不同的模型,通过多态关系可以实现模型之间的灵活关联。

首先,需要在模型之间建立多态关联。假设我们有三个模型:User、Post和Comment。User模型拥有多个Post和Comment,而Post和Comment模型都属于User模型。在User模型中,可以使用morphMany方法定义多态关联:

代码语言:txt
复制
use Illuminate\Database\Eloquent\Model;

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

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

在Post和Comment模型中,需要使用morphTo方法定义反向关联:

代码语言:txt
复制
use Illuminate\Database\Eloquent\Model;

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

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

接下来,可以使用聚合函数来获取字段总和。在Laravel中,可以使用sum方法来计算字段总和。假设我们要获取User模型下所有Post的阅读量总和,可以使用以下代码:

代码语言:txt
复制
$user = User::find($userId);
$totalViews = $user->posts->sum('views');

上述代码中,首先通过find方法获取指定的User模型实例,然后通过访问posts属性获取该用户的所有Post模型实例。最后,使用sum方法计算所有Post模型实例的views字段总和。

需要注意的是,上述代码中的'views'是一个示例字段名,实际应根据具体的数据库表结构来替换。

对于应用场景,通过多态关系获取字段总和可以用于统计用户在不同模型下的数据总和,例如统计用户发布的所有文章的阅读量总和、评论总数等。

在腾讯云相关产品中,可以使用腾讯云数据库MySQL版(TencentDB for MySQL)作为后端数据库存储数据,并使用腾讯云云服务器(CVM)作为应用的服务器运行环境。此外,腾讯云还提供了丰富的云计算产品和解决方案,如云函数(SCF)、容器服务(TKE)、人工智能平台(AI Lab)等,可以根据具体需求选择适合的产品。

更多关于腾讯云产品的介绍和详细信息,请参考腾讯云官方网站:腾讯云

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

相关·内容

Laravel 动态隐藏 API 字段的方法

现在我们可以访问 http://api.dev/api/users/1 ,你会发现响应已经没有id 字段了。 { "data": { "name": "Mr....* 将隐藏字段通过 UsersResource 处理集合 * * @param $request * @return array */ protected function processCollection...现在我们访问 http://api.dev/api/users 看到返回结果没有了 id 和 email 字段了如在 UsersController 的指定方法 . { "data": [{ "...//api-fields.lab.php71/api/users", "per_page": 3, "to": 3, "total": 20 } } 6- 总结 本文目标是让Resource类通过隐藏一些在其他接口允许暴露的字段从而变得更加灵活...以上所述是小编给大家介绍的 Laravel 动态隐藏 API 字段的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

5.4K31
  • 一种 Laravel 简单设置多态关系模型别名的方式

    作为 Laravel 的重度使用者肯定都对多态关系不陌生,以官方文档为例,文章有标签,视频有标签,那么文章和视频这些模型与标签模型的关系就是多态多对多(Many To Many (Polymorphic...实现目标 我们有两个选择去实现它: 1.创建一个模型基类覆盖这个方法,所有的模型都来集成它即可;2.创建一个 trait,需要的模型引入它。...,那么模型如何获取表名呢,直接使用模型的 getTable 即可,那么整个 trait 的实现如下: app/Traits/UseTableNameAsMorphClass.php <?...UseTableNameAsMorphClass { public function getMorphClass() { return $this->getTable(); } } 然后我们需要用到关系类型的模型引入它即可...References [1] 多态多对多(Many To Many (Polymorphic)): https://laravel.com/docs/6.x/eloquent-relationships

    2.7K10

    VS通过建立依赖关系使文件结构更清晰

    目录 一、文件依赖达到的效果 二、文件依赖关系定义Project文件 三、通过VS插件建立两个文件之间的依赖关系 一、文件依赖达到的效果 对于项目文件之间的依赖关系...默认的情况下,View和PresenterVS处于同一个级别,如果能够建立起它们之间的依赖关系,让Presenter文件嵌套在View文件下,在结构上将显得更加清晰(如左图所示)。 ?...再举一个例子,《如何让ASP.NET默认的资源编程方式支持非.ResX资源存储》一文,我提供了一种通过自定义ResourceProvider让ASP.NET默认的资源编成模式支持不同形式的资源存储形式...二、文件依赖关系定义Project文件 目录结构来讲,主文件和依赖文件处于相同的层级,它们的依赖关系实际上是通过Project文件(.csproj文件或者.vbproj文件)来定义的。...但是这样的方式操作性上是极不方便的,那么是否具有更好的方法呢? 三、通过VS插件建立两个文件之间的依赖关系 实际上,关于方便建立两个项目文件之间的依赖关系,网上有很多开源的VS插件。

    1.7K110

    Laravel学习记录--Model

    Model关联 一对一 一对多 渴求式加载 多对多 远层一对多 多态关联 多对多多态关联 一对一 1:1最基本的关联关系 ,如一个User模型关联一个Phone模型,为了定义此关联,我们需User模型定义一个...,如果是单条记录获取关联关系,就需要两次查询;如果是多条记录获取关联关系,比如文章列表页获取作者信息,因为每篇文章的作者通过动态属性获取都有一次查询,所以对N条记录来说,需要N+1次查询才能返回需要的结果...id获取其选修的课程,现在通过课程id查询选修的学生 Mclass模型定义一个stus方法,这个方法还是调用belongsToMany();并返回值 如: //获取选修此课程的学生 public...,Image模型定义方法并使用morphTo返回结果 morphTo(name,type,id,ownerKey) name:关联关系的名称 ,如不指定默认为关联方法名type:存放关联类的字段,如不指定结合...显然不现实而且还是多对多关系,到时候处理起来也很复杂,或者中间表里面添加媒体id字段,每个媒体id字段与标签建立连接?

    13.6K20

    Laravel Eloquent 模型关联关系(下)

    在前面两篇教程,学院君陆续给大家介绍了 Eloquent 模型类支持的七种关联关系通过底层提供的关联方法,我们可以快速实现模型间的关联,并且进行关联查询。...注:实际开发为了提高查询性能,我们往往是 posts 表冗余提供一个 comments_count 字段,每新增一条评论,该字段值加 1,查询的时候直接取该字段即可,从而提高查询的性能。...渴求式加载,也可以通过闭包传入额外的约束条件,只不过这个约束条件是对关联模型自身的过滤,不影响目标模型的查询: $post = Post::with(['comments' => function...Eloquent 提供了这种同步机制帮助我们更新子模型时触发父模型的更新时间 updated_at 字段值更新,要让该机制生效,需要在子模型配置 $touches 属性: // 要触发更新的父级关联关系...,我们分了三篇的篇幅来介绍 Eloquent 模型的管理关系,回顾一下,主要包含以下内容: 七种关联关系的定义:一对一、一对多、多对多、远层一对多、一对一的多态关联、一对多的多态关联、多对多的多态关联;

    19.6K30

    浅谈laravel-admin form的数据,提交后,保存前,获取并进行编辑

    有一个这样的需求: 当商品设置为立即上架时,通过审核就进入上架状态,当设置为保存时,通过审核就进入未上架状态。...所以,需要在保存前根据提交的审核状态和设置的方式得到商品状态再保存,而通过$form->model()->attribute_name只能获取提交后的值,不能更改。...Google之后发现了已经有解决方案:可以修改提交表单时的逻辑吗 #375 模/ /型添加如下方法: public static function boot() { parent::boot()...; static::saving(function ($model) { // 从$model取出数据并进行处理 }); } 以上这篇浅谈laravel-admin form的数据,提交后,保存前,...获取并进行编辑就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持/ /。

    3.6K00

    浅谈laravel-admin form的数据,提交后,保存前,获取并进行编辑

    有一个这样的需求: 当商品设置为立即上架时,通过审核就进入上架状态,当设置为保存时,通过审核就进入未上架状态。...所以,需要在保存前根据提交的审核状态和设置的方式得到商品状态再保存,而通过$form- model()- attribute_name只能获取提交后的值,不能更改。...Google之后发现了已经有解决方案:可以修改提交表单时的逻辑吗 #375 模型添加如下方法: public static function boot() { parent::boot();...static::saving(function ($model) { // 从$model取出数据并进行处理 }); } 以上这篇浅谈laravel-admin form...的数据,提交后,保存前,获取并进行编辑就是小编分享给大家的全部内容了,希望能给大家一个参考。

    4.2K62

    从0开始做一个审批模块

    我第一个想到的就是 applications ,有一个书面申请的含义,也是个名词,可惜这个单词我们数据库已经被占用,作为『应用』表了。...所以这个需求方,可以定义为多态的,说的通俗一点就是通过类型和 ID 来决定对象。不过这里我并没有定义为多态,因为应用里面不会出现需求方不确定类型的场景,还是继续沿用 creator_id。...:『Laravel 多态关系的表单验证[3]』 。...审批通过则根据用户的申请动作做出相应的处理;审批不通过则啥都不干发送通知就行了。就目前的需求场景也就是将申请者加入到对应的项目或者团队。...[2] Laravel: https://laravel.com/ [3] Laravel 多态关系的表单验证: https://learnku.com/articles/12449/form-validation-of-polymorphic-relationships-in-laravel

    1.7K10

    salesforce零基础学习(八十七)Apex Picklist类型通过Control 字段获取Dependent List 值

    Picklist字段如何在Apex通过control字段的值获取到Dependence字段的值,针对Salesforce配置来说,我们很好配置出两个Dependence字段关系通过点击设置一下include...如下图,我们Goods__c自定义表中新建了两个Picklist类型字段,并且设置了依赖关系,这个配置清晰可见,如何在代码获取呢? ?...一.将两个依赖字段放置页面,Util方法读取页面中指定元素从而获取Control字段的某一个值情况下Dependence的值集合。...validForjava返回类型为byte[],因为salesforce没有byte这个基本类型,我们可以通过byte的性质,或者直接看bytejava的定义,模拟出byte的Wrapper使用...总结:Apex Class获取Picklist间的级联关系,主要是通过PicklistEntry的隐藏属性validFor获取其中的关系,并对返回的byte[]数组进行解析找到其对应的control

    89360

    salesforce零基础学习(八十七)Apex Picklist类型通过Control 字段获取Dependent List 值

    Picklist字段如何在Apex通过control字段的值获取到Dependence字段的值,针对Salesforce配置来说,我们很好配置出两个Dependence字段关系通过点击设置一下include...如下图,我们Goods__c自定义表中新建了两个Picklist类型字段,并且设置了依赖关系,这个配置清晰可见,如何在代码获取呢? ?...一.将两个依赖字段放置页面,Util方法读取页面中指定元素从而获取Control字段的某一个值情况下Dependence的值集合。...validForjava返回类型为byte[],因为salesforce没有byte这个基本类型,我们可以通过byte的性质,或者直接看bytejava的定义,模拟出byte的Wrapper使用...总结:Apex Class获取Picklist间的级联关系,主要是通过PicklistEntry的隐藏属性validFor获取其中的关系,并对返回的byte[]数组进行解析找到其对应的control

    80500

    orm 系列 之 Eloquent演化历程2

    中一大亮点Artisan,Artisan是 Laravel 自带的命令行接口名称,此处不做具体的介绍了,有机会再细说的,当我们命令行执行php artisan command的时候,会去调用migrateCommand...'); // 从文件获取migrate files $files = $this->getMigrationFiles($path); // 获取已经执行的migration...本文最后讲下Eloquent中新增的对象之间的关系多态关系,以下内容摘自[ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系 表结构 多态关联允许一个模型单个关联下属于多个不同模型...模型结构 接下来,让我们看看构建这种关联关系需要在模型定义什么: <?...文件,其最初是f851607加入的,我们来看下Manager的内容。

    2.4K30

    Laravel之Eloquent ORM

    Installation: composer require barryvdh/laravel-debugbar --dev 二、一对一关系映射 2.1 创建表 public function up()...自定义外键: return $this->hasOne(Profile::class,'显示指定自定义外键'); 2.4 一对一测试 依赖注入Request $request,获取当前登录用户$request...获取每个国家论文总数: ? 五、多样化的一对多关系映射(多态关联) 面向对象多态:运行时加载机制 ? 更多:https://laravel-china.org/doc... 伪造数据: ? ?...六、多对多多态关联 除了传统的多态关联,您也可以定义「多对多」的多态关联。例如,Post 模型和 Video 模型可以共享一个多态关联至 Tag 模型。...使用多对多多态关联可以让您在文章和视频中共享唯一的标签列表。 更多:https://laravel-china.org/doc...

    1.9K30

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

    作为 Laravel 的重度使用者肯定都对多态关系不默生,以官方文档为例,文章有标签,视频有标签,那么文章和视频这些模型与标签模型的关系就是 多态多对多(Many To Many (Polymorphic...实现目标 我们有两个选择去实现它: 创建一个模型基类覆盖这个方法,所有的模型都来集成它即可; 创建一个 trait,需要的模型引入它。...,那么模型如何获取表名呢,直接使用模型的 getTable 即可,那么整个 trait 的实现如下: app/Traits/UseTableNameAsMorphClass.php <?...trait UseTableNameAsMorphClass { public function getMorphClass() { return $this- getTable(); } } 然后我们需要用到关系类型的模型引入它即可...总结 以上所述是小编给大家介绍的Laravel设置多态关系模型别名的方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!

    2K21

    Laravel Eloquent 模型关联关系详解(上)

    Eloquent 模型支持的关联关系包括以下七种: 一对一 一对多 多对多 远层一对多 多态关联(一对一) 多态关联(一对多) 多态关联(多对多) 下面我们将以设计一个简单的博客系统数据库为例一一介绍上述关联关系...你可能注意到了我们定义关联关系时,仅仅指定了模型类名,并没有指定通过哪些数据表字段建立关联,这并不是说 Laravel 神通广大,能知过去未来之事,而是因为 Eloquent 对此做了默认的约定。...如果是单条记录获取关联关系,就需要两次查询;如果是多条记录获取关联关系,比如文章列表页获取作者信息,因为每篇文章的作者通过动态属性获取都有一次查询,所以对N条记录来说,需要「N+1」次查询才能返回需要的结果...建立相对的关联关系 与之前的关联关系一样,多对多关联也支持建立相对的关联关系,而且由于多对多的双方是平等的,不存在谁归属谁的问题,所以建立相对关联的方法都是一样的,我们可以 Tag 模型通过 belongsToMany...relations 字段中有一个 pivot 属性,中间表字段就存放在这个属性对象上: 我们遍历返回结果的时候可以循环中通过 $post->pivot->tag_id 获取中间表字段值。

    9.9K40

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

    本篇文章,我将跟大家一起学习 Eloquent 中最复杂也是最难理解的部分——模型间关系。...---- 这里最难的地方在于后面的两个 foreign_key 和 local_key 的设置,大家可以就此记住: User 类,无论 hasOne 谁,第二个参数都是 `user_id`,第三个参数一般都是...pay: id ... ... user_id User 和 Pay 具有一对多关系,换句话说就是一个 User 可以有多个 Pay,这样的话,只 Pay 表存在一个 `user_id` 字段即可。...其他关系 Eloquent 还提供 “远层一对多关联”、“多态关联” 和 “多态的多对多关联” 这另外三种用法,经过上面的学习,我们已经掌握了 Eloquent 模型间关系的基本概念和使用方法,剩下的几种不常用的方法就留到我们用到的时候再自己探索吧...重要技巧:关系预载入 你也许已经发现了,一对一关系,如果我们需要一次性查询出10个 User 并带上对应的 Account 的话,那么就需要给数据库打 1 + 10 条 SQL,这样性能是很差的。

    2.7K30

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

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

    2.1K40

    Laravel 参数验证的疑与惑

    然后AppServiceProvider重新绑定新的验证器工厂创建类; 二,AppServiceProvider通过resolver方法设置工厂类的resolver属性,接管验证器的实例化,例如:...使用自定义验证类,相对于extend方法扩展有一个很大的bug就是无法自定义类获取到当期的验证器对象。...从而导致在当前扩展的验证规则,只能过获取到需要验证的数据,而获取不到其他的字段数据,无法进行联合字段的验证。像上面比较两个字段的大小的验证规则就无法实现。...验证规则的扩展有两种方式,一种是通过extend方式实现。extend方式对验证器的影响是全局的,整个运行进程有效。可以获取到验证器本身,因此可以做多个字段关系的验证;另一种是通过自定义规则类实现。...但是自定义规则类本身无法直接获取到验证器本身,不能够做多个字段关系的验证。如果需要实现,则需要使用自定义验证器,将验证器传入到验证规则中去。

    3.4K00
    领券