【问题标题】:Sorting on Eloquent relationship根据 Eloquent 关系排序
【发布时间】:2017-03-25 03:03:48
【问题描述】:

我在一个页面上有一个简单的表格,用于输出棒球比赛的分页列表。它显示了比赛日期、当地球队和客队以及城市。我有三个 Eloquent 模型(Game、Team 和 City),所有的关系都很好,一切都很好。我喜欢能够做到$game->localTeam->city->fullName(一个结合了城市和州的突变体)。

数据来自以下查询:Game::with('teamHome', 'teamVisitor', 'teamHome.city')。我希望能够按任何列排序。但是如果我在查询中使用->orderBy(),它只允许对游戏表中的结果进行排序。我找不到对球队或城市进行排序的方法。从我读到的,我需要做一个流畅的查询并加入我所有的表。但是,我将拥有一个 stdClass 对象数组,并且无法在我的 Eloquent 关系中导航并使用上面描述的 fullName mutator。

这个场景看起来很简单,一定有一种优雅的方式来做到这一点?

【问题讨论】:

  • 你不能像 $game->localTeam->sortBy('name') 和 $game->localTeam->city->sortyBy('name') 那样做吗? (假设 Team 和 City 有 name 属性)

标签: laravel sorting eloquent fluent


【解决方案1】:

你可以在做->get()之后使用sortBy方法。这将获取集合,然后对其进行排序。

否则您可以执行 RAW 查询,但会丢失流畅的语法。

【讨论】:

  • 是的,但这只会对分页页面的结果进行排序,对吧?
  • 你是对的!正如您所说,也许您必须使用查询生成器。从 Laravel 5.3 开始,它返回一个集合
猜你喜欢
  • 1970-01-01
  • 2017-07-12
  • 2017-08-22
  • 2016-06-21
  • 2015-07-05
  • 2021-01-25
  • 2014-06-25
  • 2022-10-09
  • 1970-01-01
相关资源
最近更新 更多