按Laravel中关系表中的字段排序


Orderby a field from relation table in Laravel

我的项目中有事件,每个事件可以有多个日期,例如事件"XYZ"可以在"1月21日"、"8月20日"answers"12月30日",并且它们是每年递归的。以下是我的型号:

class Event extends Model {
    public function dates() {
        return $this->hasMany('App'EventDate');
    }
}

class EventDate extends Model
{
    public function event()
    {
        return $this->belongsTo('App'Event');
    }
}

现在我想选择活动,并按活动日期排序。

事件::带有([dates'=>函数($query){

$query->其中('start_date','>',Carbon::now());$query->orderBy('start_date');

}]);

但它每年都是递归的,所以为了检查未来的事件,这是一个问题,并在其start_date上对事件本身进行排序。

最简单的选择是获取事件日期及其对应的事件:

$eventDates = EventDate::with('event')
  ->where('start_date', '>', Carbon::now())
  ->orderBy('start_date')
  ->all();

现在,您可以通过以下方式迭代事件日期并访问事件数据:

foreach ($eventDates as $eventDate) {
  echo $eventDate->event->name;
}