使用 Eloquent (Laravel) 在分组之前进行排序

2024-01-11

我有一个包含以下列的“消息”表

CREATE TABLE `messages` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fromId` int(11) NOT NULL,
  `toId` int(11) NOT NULL,
  `message` text NOT NULL,
  `status` int(11) NOT NULL,
  `device` varchar(100) NOT NULL,
  `createdAt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=latin1;

我正在尝试获取 'toId' = $id 并按 fromId 分组的所有消息。问题在于结果中显示的“消息”是第一个,而不是最新的。我尝试通过 createAt 进行排序,但它不起作用。

在查询和分组结果之前如何按“createdAt”排序?我想使用 Eloquent 以 laravel 的方式做到这一点。

我的查询:

$chats = Message::with('sender','recipient')
        ->where('toId',$id)
        ->orderBy('createdAt')
        ->groupBy('fromId')
        ->paginate(10)

我只需要对消息模型做类似的事情。对我有用的是应用unique返回的 Eloquent 集合上的方法。

Model::where('toId', $id)
    ->orderBy('createdAt', 'desc')
    ->get()
    ->unique('fromId');

查询将返回按以下顺序排序的所有消息createdAtunique方法会将其减少为每个消息一条消息fromId。这显然不如直接使用数据库那么高效,但就我而言,我对查询有进一步的限制。

此外,还有许多更有用的方法来处理这些集合:https://laravel.com/docs/5.2/collections#available-methods https://laravel.com/docs/5.2/collections#available-methods

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

使用 Eloquent (Laravel) 在分组之前进行排序 的相关文章

随机推荐

  • 动态控制 @Formula 列的延迟/急切加载

    我们有一些带有 Hibernate 注释的属性的实体 Formula注解 注释中的 SQL 片段主要运行标量子查询 例如COUNT查询 例如 我们有一个四层深的一对多关系层次结构 A lt B lt C lt D where lt 标记一对
  • 在 Rmarkdown 文本中使用变量

    我正在创建一个 Rmarkdown 文档 我的代码块检查数据集中的列 行数并将信息保存在变量中 r echo FALSE warning FALSE df dimenzions lt dim demo 我想使用存储在变量中的数据 信息rma
  • .Net WebApi 中的多个 Await 异步

    我们有许多异步控制器和服务 它们利用await async关键词 许多操作看起来有点像 public async Task
  • 如何将字符串转换为base64字节数组,这有效吗?

    我正在尝试编写一个将字符串转换为 base64 字节数组的函数 我尝试过这种方法 public byte stringToBase64ByteArray String input byte ret System Text Encoding
  • Drupal 7 默认 .htaccess

    我正在寻找 Drupal 7 的默认 htaccess 代码 由于某种原因 安装根本没有更新 htaccess 文件并且它是空白的 任何帮助将不胜感激 因为我在任何地方都找不到这个 实际上 Drupal 官方源代码在 GitHub 上 ht
  • Objective-C:检索 Class 实例的超类的首选方法

    我想知道以下两种方法中的哪一种是检索 a 的超类的正确方法或首选方法Class多变的 Class getSuperclass Class cls return cls superclass Class getSuperclass Class
  • 无法在横向模式下点击 (x,y) 坐标

    在 Xcode 8 Swift 3 中 使用坐标 withNormalizedOffset CGVector 函数与 XCUIElement 交互似乎仅在纵向模式下有效 为了测试此功能 我创建了一个单屏项目 其中一个按钮位于视图中央 然后我
  • 无法执行 Laravel artisan 命令

    我刚刚安装了最新版本的 Laravel 并尝试从 Git Bash 运行以下命令 php artisan migrate make create users table table users create 这会触发以下错误 Could n
  • Python 社交身份验证重定向到同一 URL

    当我使用装饰器 login required 选择某个视图后 用户将被重定向到 http example com login http example com login 下一个 anuncio adicionar right 但是 在我使
  • 你能相信mysql_insert_id吗? [复制]

    这个问题在这里已经有答案了 我有一个注册页面 然后将数据插入 MySQL 中的两个表中 第一个是用户名 密码 电子邮件等技术信息 另一个是姓名 地址等个人信息 我的技术信息表有一个主键自增ID 然后 一旦我在该表中创建了该行 我立即在通用信
  • 条形图后面的情节线

    我想创建一个条形图 其中条形图绘制在水平线的顶部 以下代码完成此操作 y lt c 1 2 3 5 barplot y abline h mean y barplot y add T 然而 我担心add T参数输入barplot 如果重复使
  • MediaPlayer.isplaying() 方法中的 java.lang.IllegalStateException

    public static MediaPlayer mp null public static void playGeneric int name final ImageButton button final ImageButton per
  • 将两个 CGPoint 转换为 CGRect

    鉴于两个不同的CGPoints 将它们变成CGRect Example CGPoint p1 CGPointMake 0 10 CGPoint p2 CGPointMake 10 0 我怎样才能把它变成一个CGRect 这将采用两个任意点并
  • 在 Linux 上开发 C# [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否有有效的开源工具可以在 Linux Ubuntu 上开发 C 应用程序 特别是 我必须开发
  • 为什么 Python 中的列表理解如此称呼?

    我知道 Python 不是第一个具有列表理解的语言 我只是对这个名字的历史感兴趣 我特别感兴趣的是为什么它被称为理解 为什么 Python 中的列表理解如此称呼 这个名字来源于一个概念集合理解 http en wikipedia org w
  • Python range 函数如何在实际参数之前有一个默认参数?

    我正在编写一个函数 它接受一个可选列表并将其扩展到指定的长度 而不是写成foo n list None 我想知道如何模拟 Python 范围函数的行为 其工作原理如下 gt gt gt range 10 0 1 2 3 4 5 6 7 8
  • 批量上传图片到SSRS

    我们用了优秀的RSBuild http rsbuild codeplex com用于将报告批量上传到 SQL Server Reporting Services SSRS 但我找不到批量上传图像的方法 使用报告管理器一次上传一张图像是愚蠢的
  • (异步() => { })();这是什么?

    async function test async gt var a await this test1 var b await this test2 a var c await this test3 b this doThis a b c
  • 用于根据选择插入交叉引用的宏

    我目前在一家使用固定内部风格文档的公司工作 这包括我们的 Word 模板中内置的多级编号标题 IE 标题 1 1 1 标题 2 1 1 1 标题 3 etc 我们当前任务的很大一部分涉及添加对文档中其他部分的交叉引用 当文档有数百页且每页大
  • 使用 Eloquent (Laravel) 在分组之前进行排序

    我有一个包含以下列的 消息 表 CREATE TABLE messages id int 11 NOT NULL AUTO INCREMENT fromId int 11 NOT NULL toId int 11 NOT NULL mess