Laravel排序的关系雄辩



用户和报表之间的多对多关系。任何用户都可以拥有多个报告。我想根据created_at列对用户的报表进行排序。我该如何完成下面的工作??

$x = User::find(1)->report.....

对于任何想知道的人来说,当您链接像orderBy()这样的函数时,您在关系方法的末尾添加括号,当您只想要集合时,您将其省略。如果您需要通过排序或其他方式更改返回的集合,则需要添加括号,因为您实际上是在添加(链接)关系后面的另一个方法。

$x = User::find(1)->reports()->orderBy('created_at')->get();

查看文档。还在这里

从第二个链接:

一旦定义了关系,您就可以使用roles动态属性访问用户的角色:

$user = AppUser::find(1);
foreach ($user->roles as $role) {
    //
}

当然,像所有其他关系类型一样,您可以调用roles方法来继续将查询约束链接到关系上:

$roles = AppUser::find(1)->roles()->orderBy('name')->get();

最新更新