在关系上排序Eloquent模型(一个>多个)

时间:2016-02-18 15:09:20

标签: laravel eloquent relationship

我有一个名为" Lesson"它具有->hasMany()关系,代表本课程的日期。

要检索具有特定时间跨度内的日期的每节课,我使用whereHas

$list = Lesson::whereHas('dates', function ($query)  use ($start, $end) {
   $query->where('date','>=', $start->format('Y-m-d'))
         ->where('date','<=', $end->format('Y-m-d'));
})->get()

这可以按预期工作,但我现在想要通过最小的&#39;对$list进行排序。与课程相关的日期。

最好我希望使用Eloquent模型,因为模型中有一些需要的方法。但是,如果它不可能,那么平原就是不可能的。也可以使用sql语句。

1 个答案:

答案 0 :(得分:0)

您可以使用Laravel collections的可用方法。此代码应该这样做。

$sortedLessons = $lessons->sortBy(function ($lesson) {
    $dates = $lesson->dates;
    $minDate = $dates->sortBy('date');
    return $minDate;
});

我假设您的日期模型中有一个字段日期。