Laravel 中关系的计数关系

2023-12-01

假设我有一个Conversation像这样的模型:

class Conversation extends Model
{
    public function questions (){
        return $this->hasMany('App\Question','conversation_id','conversation_id');
    }
    public function category ()
    {
        return $this->belongsTo('App\Category', 'cat', 'cat_id');
    }

}

And a Question像这样的模型:

class Question extends Model
{
    public function conversation ()
    {
        return $this->belongsTo('App\Conversation', 'conversation_id', 'conversation_id');
    }
}

正如你所看到的,有一个hasMany这两者之间的关系。

另一方面有一个Category就像下面有关系的Conversation model :

class Category extends Node
{
    public function conversations (){
        return $this->hasMany('App\Conversation','cat','cat_id');
    }
}

现在我想附加一个名为question_count to Category计算每个类别对话的所有问题。为此我添加了这个:

    public function getQuestionsCountAttribute ()
    {
        return $this->conversations->questions->count();
    }

但是当获取类别时我收到此错误:

ErrorException in Category.php line 59:
Undefined property: Illuminate\Database\Eloquent\Collection::$questions

我做了什么?如何计算具有最小服务器过载的关系的关系?

我正在使用 Laravel 5.3.4。


我认为你在这里需要一个有很多直通关系的关系。

你做错了什么:

当你写的时候$this->conversations->questions,这是行不通的,因为questions是一个关系一次谈话而不是对话的集合(这里,$this->conversations是一个集合)

解决方案:

使用 hasManyThrough 关系:

您可以找到此关系的文档在本页,如果我的解释不好

基础知识是,您需要定义一个关系Category model:

class Category extends Node
{
    public function conversations ()
    {
        return $this->hasMany('App\Conversation');
    }

    public function questions ()
    {
        return $this->hasManyThrough('App\Question', 'App\Conversation');
    }
}

(我会让您查看非标准外键的文档)

然后您应该能够使用:$category->questions->count()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 中关系的计数关系 的相关文章

  • DOMDocument::save[domdocument.save]:无法打开流:权限被拒绝

    我有一个代码可以将 XML 文件保存到我的目录中 它实际上在我的本地主机和我的共享主机中就像一个魅力 但它在我的 Linux VPS 中不起作用 我总是收到这个错误 警告 DOMDocument save home admin xxxxxx
  • 加载视图 - codeigniter 错误

    我是 codeigniter 的新手 我正在做一个菜单 所以我将所有链接不放在同一个主文件中 以免一直重复 我的代码是 在main php中 main agregar gt Agregar span a href Modificar a s
  • PHP 添加 1 个月至今

    我有一个返回 1 个月前的 url 的函数 我想显示当前选定的月份 但我不能使用简单的当前月份 因为当用户单击 1 个月前的链接时 选定的月份将发生变化并且不是当前月份 因此 函数返回 August 2012 如何制作可以增加 1 个月时间
  • Volley Json 请求不起作用 - 字符串无法转换为 JsonObject / JsonArray

    我正在开发一个 Android 应用程序并从服务器获取 JsonObject JsonArray 手动将 String 转换为 Json 可以正常工作 我最近切换到 Volley 来处理服务器请求 并且想使用JsonObjectReques
  • 无法在 PHP 中使用 SFTP

    我正在用 PHP 编写一个简单的 SFTP 客户端 因为我们需要通过 n 个远程服务器以编程方式检索文件 我正在使用 PECL SSH2 扩展 不过 我遇到了障碍 php net 上的文档建议您可以这样做 stream fopen ssh2
  • imagecreatefrompng(和 imagecreatefromstring)导致不可恢复的致命错误

    当我尝试在不正确的 png 图像上使用 php gd 函数时 出现致命的 PHP 错误 这似乎是某种错误 因为根据函数文档 imagecreatefrompng 例如 return resource an image resource id
  • 使用 PHP 显示 Mysql 中的图像

    这就是我的数据库中的表的样子 我正在尝试显示我存储的图像 它是 mimetype longblob 当我运行代码时 它会给我一个带有 的小框 没有错误 只是那个框 有谁知道错误是什么以及如何修复它 Display Index Display
  • 在应用程序上按下类似按钮时自动刷新时间线页面?

    在时间轴发布到页面上之前 当用户在页面上按下 点赞 按钮时 页面会自行刷新 现在 启用时间线后 如果您访问应用程序并按右上角的类似按钮 页面不会自行刷新 并且应用程序不会识别用户 喜欢 该页面 当用户按下 喜欢 按钮时 是否有一种方法或事件
  • 如何在 Laravel 中验证文件类型

    我需要验证用户只上传 jpg 我有以下请求类 我制作了所需的图像 但不知道如何检查它是否只是 jpg public function rules return name gt required min 3 sku gt required m
  • Node + now.js + 模型-视图-控制-模式

    我正在使用基于 MVC 模式 模板和 PHP 类 的论坛软件 页面如下所示 domain com index php page Test 我想使用 Node 和 now js 在一个页面 domain com index php page
  • 如何使用 MySQL 和 PHP 在数据库中存储标签?

    我想创建一个数据库来存储用户为其问题输入的标签 然后为发布的每个单独问题显示所有标签 像这里这样的东西 这是现在为我做所有事情的表 CREATE TABLE questions tags id INT UNSIGNED NOT NULL A
  • 如何使用 Magento 测试 cron?

    首先我需要了解 Magento cron 是如何工作的 我知道 cron 在 Linux 上如何工作 使用crontab e 我知道我需要设置 Magento 的 cron php 定期运行 但是当我在 magento 配置文件中定义 cr
  • 判断是否存在多对多记录组合

    这似乎是一个常见的任务 有一个简单的解决方案 但我在 StackOverflow 和 Google 上都空手而归 场景是这样的 我有两个共享多对多关系的表 A 和 B 因此 我有一个带有外键的表 A B 它映射 A 到 B 记录关系 标准的
  • Php mail() vs Yahoo:有人可以简单解释YAHOO从php邮件功能接收邮件所需的步骤吗?

    我已经看到了关于这个主题的数千个类似问题 并且可以肯定的是我知道 标记为重复问题 SO中的事情 然而 仍然不清楚如何或必须做什么 简单来说 才能从 PHP mail 函数接收雅虎收件箱电子邮件 在雅虎网站上 他们提供了一个示例脚本来发送邮件
  • 扩展 Codeigniter Exceptions 类以添加自定义方法

    我创建了一个新方法来处理 401 apache 错误 我的核心类扩展了 CI 核心类 但是当我调用方法名称时 我收到此消息 致命错误 调用未定义的函数show 401 in G Path application controllers lo
  • 搜索多个表 (SQL)

    我需要能够有一个 SQL 查询来使用简单的搜索来搜索我的数据库 这是我的表格现在的样子 Table artists id name Table albums id artistID name Table songs id albumID n
  • Symfony2 Beta3 中不断收到“您请求了一个不存在的服务“test.client””

    我正在尝试设置单元测试 但每当我运行 phpunit c app 时 我都会收到此错误 Symfony Component DependencyInjection Exception ServiceNotFoundException 您请求
  • 由商店经理根据指定的分类术语过滤 WooCommerce 订单

    我想将带有特定产品标签的订单分配给后端的特定商店经理 并隐藏其余订单 我目前正在使用WooCommerce 订单拆分器 https wordpress org plugins woo order splitter免费插件可按项目 产品 将订
  • 删除 cookie php

    我正在尝试创建一个带有登录系统的平台 并将用户名和密码存储在cookie中 以使用户即使关闭浏览器然后再次输入也能保持登录状态 我设法保存了cookie 但我不知道如何制作注销按钮 这是代码 function logout body app
  • 根据产品类别自定义购物车总计和结帐总计文本

    我想根据产品类别 或其他一些逻辑 自定义购物车和结帐订单汇总表中的文本 例如 对于 总计 文本 参见图片 如果购物车包含名为 杂货 的类别中的产品 那么我希望订单摘要中的文本显示为 总计估计 文本 参见图片以下 如果购物车不包含任何杂货 那

随机推荐

  • Python 检查项目是否在列表中

    我正在尝试迭代两个列表并检查 list 1 中的项目是否在 list 2 中 如果list 1中的项目在list 2中 我想打印list 2中的项目 如果该项目不在 list 2 中 我想打印 list 1 中的项目 下面的代码部分完成了这
  • 查找 HashMap 中保存最小整数值的键

    我正在为需要学习最常用单词的年轻学生创建一个教育游戏 我随机从列表中选择三个单词 将它们显示在屏幕上 播放这三个单词之一的录音 然后学生必须选择已发音的单词 我记录他们猜对每个单词的次数 这样我就可以设定一个标准 规定何时向学生介绍新单词
  • 使用 terraform 循环 for_each 嵌套资源

    我正在尝试使用多个订阅来配置多个 Azure 服务总线主题 我能够创建主题 但无法循环订阅变量来创建订阅 locals servicebus topic 1 subscription subscription1 subscription2
  • Google Drive SDK - Java 示例不起作用

    我正在尝试使用官方 Java 示例来熟悉 Google Drive API 然而 在浪费了几个小时并尝试设置示例两次之后 我仍然无法按预期使用它 它不会显示文件的内容 而是在 FileServlet svc 路径 中引发 404 错误 进一
  • Android以编程方式删除Chrome/默认浏览器cookie、历史记录、搜索

    就像标题一样 我想通过在我的应用程序中编码来删除Android浏览器的cookie和缓存 浏览器不是网页视图 谢谢你 In your Activity or Service add ContentResolver cR getContent
  • 找不到容器 XXX 中的项目 MY_ARTIFACT_NAME

    当尝试根据教程配置 MS Release Manager 时将应用程序部署到 Azure 修改为在主机代理上使用发布构建工件时出错 我收到以下异常 该项目MY ARTIFACT NAME在容器 56811 中找不到 这会导致发布被拒绝 我已
  • 如何加载 Sass::Script::Functions 模块的扩展?

    我正在尝试根据此建议扩展 Sass Script Functions 模块 https gist github com 481261 dd07a52829886ab1ad0875a8895f0100c4b925ab 问题是 我应该将 sas
  • 交换两个字符串指针

    我必须在 C 中使用 char 并且我想通过仅交换指针来在它们之间交换 到数组而不是一次一个字符 所以我写了这段代码 include
  • 如何使用 sed/grep 提取两个单词之间的文本?

    我正在尝试输出一个包含字符串中两个单词之间的所有内容的字符串 input Here is a String output is a Using sed n Here String p 包括端点 但我不想包括它们 GNU grep 还可以支持
  • 如何获取tf.exe(TFS命令行客户端)?

    要获取 tf exe 程序 我需要安装的最少软件数量是多少 你需要安装团队探索者 最好安装与您正在使用的 TFS 版本相匹配的 Team Explorer 版本 例如如果您使用的是 TFS 2010 则安装 Team Explorer 20
  • 如何使用绝对路径获取有关 git 存储库的信息

    我正在编写一些脚本来获取有关我在本地设置的 git 存储库的信息 使用一个简单的例子可以最好地解释这一点 machine anon mkdir test machine anon cd test machine test anon mkdi
  • 创建用于静态初始化布局描述的 API/元编程 DSL

    我需要创建一个 C 元编程 DSL API 来描述通用数据布局 我想要静态初始化数据结构描述 即没有动态内存分配 最好在 ROM 部分分配 我还不太熟悉 C 11 功能 但我知道与提供的旧标准相比 您可以在初始化 静态 方面做更多的事情 我
  • 如何在 tkcalendar (Python) 中获取 DateEntry 的选定日期?

    我有一个 tkcalendar 它是日历 DateEntry 的预定义小部件 并且我正在尝试获取用户为 DateEntry 选择的日期 而可以使用以下方法提取日历小部件的选定日期 选择 获取 但我找不到 DateEntry 的任何内容 我尝
  • 可变参数模板的声明点

    什么时候可变参数模板被视为 声明 这可以在 clang 3 4 下编译 但不能在 g 4 8 2 下编译 template
  • 在设备上运行 Android systrace

    我无法运行名为 systrace pl 的 Android SDK 工具 因为出现如下错误 error opening sys kernel debug tracing options overwrite No such file or d
  • 如何使用MYSQL中的查询删除2个字符之间的文本

    我有一个名为 描述 字段的表 其中包含如下文本 Description This is a text a blah a br img This is b second b a row a 我想删除 之间的所有内容 lt and gt 所需输
  • 如何以编程方式在 iOS 中从右向左移动文本

    我想在我的应用程序中显示一些文本 例如移动文本 从右到左滚动动画 如何以编程方式执行此操作 I took UIViewcontroller 我正在开发AVAudioplayer 所以在顶部UIViewController文本将从右向左移动
  • 无法连接到启用了 SSL 的 GCP 中的 Redis

    我在用Spring boot starter redis连接到 Redis 的依赖项 下面是我的 gradle 依赖项的片段 dependencies implementation org springframework boot spri
  • 为单源最短路径问题设计一个算法,运行时间为 O(k(|V|+|E|))

    假设我们有一个有向图G V E 具有潜在的正边和负边 长度 但没有负循环 让s V是给定的来源 顶点 如何设计实时运行的单源最短路径问题算法O k V E 如果从 s 到任何其他顶点的最短路径最多花费k edges 这是 O k V E 方
  • Laravel 中关系的计数关系

    假设我有一个Conversation像这样的模型 class Conversation extends Model public function questions return this gt hasMany App Question