从Laravel关系表中的字段排序

时间:2016-08-03 10:34:29

标签: php laravel laravel-5 eloquent relationships

我的项目中有活动,每个活动都有多个日期,例如活动" XYZ"可以在" 1月21日"," 8月20日"和" 12月",它们每年都是递归的。这是我的模特:

class Event extends Model {

    public function dates() {
        return $this->hasMany('App\EventDate');
    }

}


class EventDate extends Model
{

    public function event()
    {
        return $this->belongsTo('App\Event');
    }
}

现在我想选择事件,并按事件日期订购它们将来更近。

Event :: with([' dates' => function($ query){

$ query->其中(' start_date','>',Carbon :: now());   $查询 - > ORDERBY('起始日期&#39);

}]);

但它每年都会递归,所以要检查这里的未来事件,以及在start_date上对事件本身进行排序。

1 个答案:

答案 0 :(得分:0)

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

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

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

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