使用 Eloquent 获取连接表上的最新值

2023-12-30

我有两个这样的表:

产品:

+----+-----------+
| id |   name    |
+----+-----------+
|  1 | Product 1 |
|  2 | Product 2 |
|  3 | Product 3 |
|  4 | Product 4 |
+----+-----------+

prices:

+----+-------+------------+---------------------+
| id | price | product_id |     created_at      |
+----+-------+------------+---------------------+
|  1 |    20 |          1 | 2014-06-21 16:00:00 |
|  2 |    10 |          1 | 2014-06-21 17:00:00 |
|  3 |    50 |          2 | 2014-06-21 18:00:00 |
|  4 |    40 |          2 | 2014-06-21 19:00:00 |
+----+-------+------------+---------------------+

我在产品上有这样的关系:

public function prices()
{
    return $this->hasMany('Price');
}

我可以轻松奔跑Product::with('prices')->get();获取每种产品的每种价格。

如何使用 Eloquent 只获取最新价格? (另外,如果我想要最便宜/最贵的价格怎么办?)


你可以调整你们的关系来得到你想要的。接受的答案当然有效,但是对于大量数据来说可能会导致内存过度使用。

了解更多here http://softonsofa.com/tweaking-eloquent-relations-how-to-get-latest-related-model/ and there http://softonsofa.com/tweaking-eloquent-relations-how-to-get-n-related-models-per-parent/.

以下是如何使用 Eloquent 来实现此目的:

// Product model
public function latestPrice()
{
   return $this->hasOne('Price')->latest();
}

// now we're fetching only single row, thus create single object, per product:
$products = Product::with('latestPrice')->get();
$products->first()->latestPrice; // Price model

这很好,但还有更多。想象一下您想要加载所有产品的最高价格(只是一个值):

public function highestPrice()
{
   return $this->hasOne('Price')
      ->selectRaw('product_id, max(price) as aggregate')
      ->groupBy('product_id');
}

还不是很方便:

$products = Product::with('highestPrice')->get();
$products->first()->highestPrice; // Price model, but only with 2 properties
$products->first()->highestPrice->aggregate; // highest price we need

因此,添加此访问器可以使生活更轻松:

public function getHighestPriceAttribute()
{
    if ( ! array_key_exists('highestPrice', $this->relations)) $this->load('highestPrice');

    $related = $this->getRelation('highestPrice');

    return ($related) ? $related->aggregate : null;
}

// now it's getting pretty simple
$products->first()->highestPrice; // highest price value we need
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Eloquent 获取连接表上的最新值 的相关文章

  • Laravel Blade:@extends('adminlte::page') 中参数中的双列是什么意思

    我想使用这个管理面板 https github com jeroennoten Laravel AdminLTE https github com jeroennoten Laravel AdminLTE 但我不明白这个语法 extends
  • 将资源文件链接到 Laravel4 中的视图

    您好 我是新手 正在学习 laravel 4 创建应用程序 我正在尝试使用 laravel Blade 将 twitter bootstrap3 文件链接到视图 我安装了一个新的 laravel 应用程序文件夹 为了从 url 路径中删除
  • 每 30 秒运行一次 Laravel 方法

    我有一个在我调用应用程序上的特定 URL 时运行的方法 它处理数据库队列中的行 该间隔被设置为 Cron 可能的最小间隔 即 1分钟 这需要减少到 30 秒 所以我想知道如何最好地实现这一目标 我想我可以在我的脚本中构建一个循环 运行代码两
  • barryvdh/laravel-dompdf:- fopen 无法打开流:laravel 5.7 中没有这样的文件或目录

    当我想下载发票 pdf 时出现错误 fopen project path storage fonts 071ddd89a9cb147bf5639344caee3fe8 ufm 无法打开流 没有这样的文件或目录 在此输入图像描述 https
  • laravel 正则表达式验证不起作用

    我刚刚开始使用 laravel 正在努力验证我的表单之一中的文本区域 文本区域用于用户简介 因此我只想允许使用字母 数字 空格和以下字符 这就是我所拥有的 validator Validator make Input all array b
  • JPA ManyToMany 产生的空联接表

    我有一个应用程序 其中我尝试使用 Hibernate 作为 JPA 提供程序来实现两个实体之间的多对多关系 我正在尝试的例子是一个单向的 其中一个相机可以有多个镜头 而镜头可以安装到多个相机中 以下是我的实体类 只需粘贴其中的相关部分 Ca
  • 将我的 Laravel 连接到外部数据库

    如何将 Laravel 连接到外部数据库 示例 我的本地计算机上有一个 Laravel 它在 xampp 上运行 我希望它连接到云服务器数据库 打开 env文件并编辑它 只需设置正确的外部数据库凭据 DB CONNECTION mysql
  • Laravel 4.2 Composer 安装错误:“无法扫描类”

    我想通过 Composer 在新的 Laravel 4 2 安装上安装一些软件包 但是 我遇到了例外 这是我的作曲家文件 name laravel laravel description The Laravel Framework keyw
  • 通过 IP 地址限制 Laravel 错误日志

    When debug被设定为true在 Laravel 的app config php有什么方法可以限制结果Whoops包含对某些 IP 地址的堆栈跟踪的错误页面 并且不在该列表中的 IP 显示特定视图 Thanks 没有内置 但是你可能可
  • Elasticquent(ElasticSearch) Laravel 限制

    您好 我尝试使用 elasticSearch 查询获取所有结果 但如果 limit 值为 null 则仅返回 10 个结果 videos Video searchByQuery match gt field gt request gt fi
  • 我需要在服务器上安装 Composer 吗?

    我正在尝试部署 Laravel 应用程序 想知道 Composer 是否需要单独安装在服务器上 不 您可以在单独的服务器上构建应用程序 或者在团队中工作时在开发计算机上不太理想 然后将项目 包括已安装的供应商 复制到您的服务器上 事实上 在
  • 使用factory faker创建的图像在存储在storage/public/images文件夹中时会被删除

    我正在尝试用假图像填充我的数据库 但是当 faker 将其保存到我的图像文件夹中时 一秒钟后它被删除 并且在我的数据库字段中我得到 0 我可以访问http lorempixel com http lorempixel com 也可以 pin
  • Laravel 5 / Codeception 未正确路由

    我正在尝试使用代码接收为控制器函数编写 API 测试用例 但遇到了一个问题 即控制器函数的路由似乎未正确评估 并且评估似乎根据我的不同而不同我的测试用例中有 这是我的测试用例中的代码示例 use ApiTester class Custom
  • Laravel Blade 比较两个日期

    我想比较 2 个日期 因此 我在模板刀片中创建了这样的条件 if Carbon Carbon parse contrat gt date facturation gt format d m Y lt dateNow td class dan
  • Laravel 经过身份验证的动态子域路由

    我正在尝试让经过身份验证的子域路由适用于某些特定的变量子域 app example com staging app example com testing app example com 这些应该由 auth 中间件来保护 它们本质上都参考
  • Laravel 5.1 Snappy pdf 图像未在 pdf 文件中呈现

    我在用barryvdh laravel snappy生成pdf文件 我有两个图像文件 1 yourlogohere png 位于 public image 文件夹中 2 logo2 png 位于 public app logo 以外的文件夹
  • Laravel 内存问题?

    各位 我在 DO 服务器上遇到这样的问题 我已经尝试了一切 整个网站在使用 Homestead 的 Linux 服务器上 100 正常工作 但上传后 它只能工作一次 在重新加载或刷新页面后会多次下降 我尝试增加 apache 服务器的内存
  • Chart.js - 如何将数组集合推入数据集

    我一直在尝试多种方法将数组集合推送到数据集中 任何人都可以帮助我根据下面的代码将数组推入堆积图表中 这是例子 Codepen 堆叠栏 https codepen io narendrajadhav pen abzpWam JavaScrip
  • Laravel 中 Twitter Bootstrap 导航的自动活动类

    和大多数人一样 我正在使用 Twitter Bootstrap 来构建我目前在 Laravel 中开发的网站 到目前为止 我很喜欢使用 Laravel 作为与 Rails 相当的 PHP 但我想知道是否有更好的方法来制作导航栏 我试图确保我
  • NHibernate双向多对多映射列表/包

    我正在努力处理双向多对多映射 其中顺序在一侧很重要 但在另一侧则不重要 我有两个班级 项目和学生 一个项目有很多学生 顺序很重要 方案A John Sally Seth 方案B Alex Seth Amy John 一个学生有很多程序 但顺

随机推荐

  • 我应该从 MooTools 转换为 jQuery 吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 服务器无法验证请求。确保授权标头的值格式正确,包括签名

    我注意到我的计算机时区设置为 UTC 08 00 Pacific Time US Canada 所以我把它改为 UTC 08 00 Kuala Lumpur Singapore 然后当我打开 Azure 存储资源管理器时 它显示以下错误 我
  • 确定焦点事件:单击或制表符

    如果焦点是在单击事件或 tabstop 上触发的 如何确定 jQuery 上的焦点事件 我有这个焦点事件 如果焦点是由制表符触发的 我将执行某些操作 如果是单击 我将不会执行它 这是一个伪代码 a focus function if Thi
  • ORM 有何伟大之处?

    所以我的头靠在墙上 希望有人能来帮忙 要么把墙移走 要么阻止我的头移动 在过去的 3 4 周中 我一直在调查 ORM 是否为新项目做好了准备 ORM 必须映射到现有的大型且老化的 SQL 数据库 所以我尝试了亚音速 我真的很喜欢 v2 和
  • 如何使非模态对话框窗口始终位于最前面?

    我正在使用一个实例Dialog 在我的应用程序中显示一个小控制器窗口 用户可以与之交互以影响主窗口中的功能 有点像远程控制 我可以使这个对话框模式化 modality Qt WindowModal or modality Qt Applic
  • spring请求参数如何转换

    在基于 Spring 3 的 Web portlet 应用程序中 我有一个控制器 其方法如下 RenderMapping public ModelAndView handleRenderRequest RequestParam MyClas
  • Highcharts如何使用JavaScript变量作为系列数据源?

    我正在运行一个 asp net 代码隐藏 它创建一个字符串变量 该变量保存由逗号分隔的浮点数集合 C 中类似这样的东西 string myCString 4 5 3 1 6 5 7 0 1 3 然后 该变量进入 asp net 网页 并在其
  • 当上游服务器重新启动且未恢复正常时,NGINX 显示“错误网关”

    每次当我重新启动上游服务器时 我的 NGINX 显示 坏网关 这没关系 但后来 当上游服务器重新启动 nginx 时 nginx 不会自动恢复 我需要手动重新启动它 nginx 是否有一个选项可以让 nginx 每隔几秒检查一次上游是否恢复
  • Swift NSTimer 无法识别的选择器发送到实例timerFireMethod

    我正在为 iOS 9 2 编写一些计时器代码 我通过 xcode 下载了最新的 iOS 9 2 文档 他们展示 void timerFireMethod NSTimer timer 但这是行不通的 如果我使用这样的签名 func timer
  • 使用C#,如何读取动态创建的文本框的内容?

    Hy 我创建了一些具有标准内容的动态文本框 有谁知道当我按一个按钮时如何读取这些文本框的内容 假设用户修改了标准内容 多谢 Jeff Update 这就是我创建文本框的方式 foreach string name in listOfName
  • Magento getSingleton 混淆

    我对我接到的电话有点困惑Mage getSingleton 我希望有人能帮助我更好地理解 我见过一段核心代码是这样做的 Mage getSingleton customer session gt isLoggedIn 我不懂 PHP 但我想
  • Windows Phone 部署错误 DEP0001:意外错误:-2147009290

    正在开发 Windows Phone 10 应用程序 并在我的 ARM Lumia 950 设备上从 Visual Studio 运行它多次 然后我的 950 进行了操作系统更新 很快就强制重启了 更新至 10 0 14393 576 此后
  • 将新的 div 滑到另一个 div 下方

    我想要一个新的 隐藏的 div 从另一个 div 下面滑下来 我的想法是我有一个输入字段和一个添加按钮 单击添加按钮时 会显示更多表单元素 在下面滑出 这的形式部分对我的问题并不重要 所以我只是让第一个 div 为文本 将鼠标悬停在我身上以
  • 使用 Faraday 和 Rspec 进行存根

    我有一个看起来像这样的模型 class Gist def self create options post response Faraday post do request request url https api github com
  • CGO 库构建为 JS WASM 文件

    我想使用从 Golang 构建的 WebAssembly 库编写 JS 脚本 但我需要使用C库并通过CGO使用它 简而言之 我的代码如下所示 只是加载 C 库的示例 package main include
  • 如何在 PHP exec 中使用 Nmap

    我想从 PHP 调用 Nmap 如果我这样做 exec nmap output var dump output 它有效 我得到了经典的 Nmap 的用法 文本 但是当我尝试运行 UDP 检查时 exec nmap p 586 sU xx x
  • 使用正则表达式在 Notepad++ 中将单行 javascript 注释替换为多行样式注释

    我想使用 Notepad 搜索 javascript 文件或包含一些 javascript 的 html 文件 并用多行样式注释替换所有单行注释 例如 some comment goes here替换为 some comment goes
  • BadPaddingException:给定的最终块未正确填充

    我有一个用 DES ECB PKCS5Padding 加密的私钥文件 由秘密短语生成的 56 位 DES 密钥 我想解密它 我不知道为什么 但每次我尝试解密时 我的密码类的方法 doFinal 都会抛出此错误 javax crypto Ba
  • 浮点精度误差

    我对下面的 LISP 表达式有疑问 对浮点数求和时存在浮点精度误差 CL USER gt 380 158 27 35 52 Actual 573 79004 Expected 573 79000 请建议我如何在 LISP 中达到预期的结果
  • 使用 Eloquent 获取连接表上的最新值

    我有两个这样的表 产品 id name 1 Product 1 2 Product 2 3 Product 3 4 Product 4 prices id price product id created at 1 20 1 2014