Illuminate\Database\Eloquent\Builder::sortByDesc() 方法未定义。

7

我试图获取最近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,但也没有成功。

1
应该是 Project::orderBy('created_at', 'DESC') - STA
或者 latest('created_at')->take(5) - Makdous
1个回答

11

sortByDesc 方法按照模型中某个关联关系的字段对集合进行排序。

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接