【问题标题】:Call to undefined method Illuminate\Database\Eloquent\Builder::sortByDesc()调用未定义的方法 Illuminate\Database\Eloquent\Builder::sortByDesc()
【发布时间】:2020-10-17 18:46:39
【问题描述】:

我正在尝试获取 5 个最近项目的列表,并根据 created_at 日期字段按降序对它们进行排序。我正在使用 Model::with() 来避免 n+1 问题。下面是代码:

  $recentProjects = Project::with('visits','team')
                                ->whereYear('created_at',now()->year)
                                ->sortByDesc('created_at')->take(5)
                                ->get();

但是,我得到了错误:

调用未定义的方法 Illuminate\Database\Eloquent\Builder::sortByDesc()

我尝试了不同的方法,比如 Project::orderBy() 后跟 with,但也没有锻炼。

【问题讨论】:

  • 应该是Project::orderBy('created_at', 'DESC')
  • latest('created_at')->take(5)

标签: laravel eloquent


【解决方案1】:

sortByDesc 方法按属于模型中某些 eloquent 关系的字段对集合进行排序。

如果您尝试使用 sortByDescmodel 本身(您当前的模型对象)对集合进行排序,请使用 orderBy 而不是 sortByDesc

Project::orderBy('created_at', 'DESC')
    ->with('visits','team')
    ->whereYear('created_at', now()->year)
    ->take(5)
    ->get();

【讨论】:

    猜你喜欢
    • 2021-10-18
    • 2019-09-29
    • 2019-09-23
    • 2019-11-04
    • 2019-03-27
    • 1970-01-01
    • 2014-04-23
    • 2016-09-05
    • 1970-01-01
    相关资源
    最近更新 更多