当前位置: 首页 > 面试题库 >

Laravel Eloquent:如何订购相关模型的结果?

濮丁雷
2023-03-14
问题内容

我有一个叫做 School 的模型,它有很多 学生

这是我模型中的代码:

public function students()
{
    return $this->hasMany('Student');
}

我在控制器中使用此代码让所有学生:

$school = School::find($schoolId);

并在视图中:

@foreach ($school->students as $student)

现在,我想按表中的某些字段对 学生 进行排序students。我怎样才能做到这一点?


问题答案:

您可以通过几种方法实现这一目标:

// when eager loading
$school = School::with(['students' => function ($q) {
  $q->orderBy('whateverField', 'asc/desc');
}])->find($schoolId);

// when lazy loading
$school = School::find($schoolId);
$school->load(['students' => function ($q) {
  $q->orderBy('whateverField', 'asc/desc');
}]);

// or on the collection
$school = School::find($schoolId);
// asc
$school->students->sortBy('whateverProperty');
// desc
$school->students->sortByDesc('whateverProperty');


// or querying students directly
$students = Student::whereHas('school', function ($q) use ($schoolId) {
  $q->where('id', $schoolId);
})->orderBy('whateverField')->get();


 类似资料:
  • 问题内容: 下面是Stuff类型的结构。它具有三个整数。A ,它和它的。让我们假设计算给定int列表的double和power是昂贵的计算。 的结果应与初始化内容相同,例如: 我知道我可以使用并从通道中收集值,但是我不知道什么双/次方属于什么数字。 问题答案: Goroutines独立地并行运行,因此,如果没有显式同步,您将无法预测执行和完成顺序。因此,您无法将返回的数字与输入的数字配对。 您可以

  • 我被一个简单的任务困住了。我只需要这通电话的结果 其中,是一个模型。我试过这个 但它不起作用。从表中获取所有数据并对其进行排序的更好方法是什么?

  • 我正在使用Laravel Spark开发一个APIendpoint。 此endpoint返回给定团队及其用户。 但是,我希望通过用户模型上的方法对这些用户进行排序。 在我的应用程序\用户模型上,我有一个方法: 是否有任何方法可以返回用户关系,但根据该方法的结果对用户进行排序?

  • 问题内容: 我正在编写一个具有People模型的Django应用程序,但遇到了麻烦。我正在使用“多对多”关系将角色对象分配给人们- 角色具有名称和权重。我希望按角色最重的顺序来排列我的人员清单。如果我执行People.objects.order_by(’-roles__weight’),那么当人们被分配了多个角色时,我会得到重复。 我最初的想法是添加一个称为 最重角色权重 的非规范化字段- 并以此

  • 问题内容: 我目前有使用PIVOT生成如下表的查询: 我想做的是,但看起来像是拉伸,结果是值递减。 这是查询: 这样做会产生错误,因此可以指定列吗? 问题答案: 试试这个: