Php 按关系字段对集合进行排序
我有一个事件模型,该模型具有以下属性:许多日期模型Php 按关系字段对集合进行排序,php,laravel,eloquent,Php,Laravel,Eloquent,我有一个事件模型,该模型具有以下属性:许多日期模型 public function dates () { return $this->belongsToMany('App\Date', 'event_date'); } 每个日期都有开始日期和结束日期 锿: 事件->名称=StackOverflow会议 事件->日期()= [0](“开始”=>2018年1月24日,“结束”=>2018年1月27日) [1] (“开始”=>2018年4月24日,“结束”=>2018年4月27日)
public function dates () {
return $this->belongsToMany('App\Date', 'event_date');
}
每个日期都有开始日期和结束日期
锿:
事件->名称=StackOverflow会议
事件->日期()=
[0](“开始”=>2018年1月24日,“结束”=>2018年1月27日)
[1] (“开始”=>2018年4月24日,“结束”=>2018年4月27日)
事件->名称=复活节派对 事件->日期()= [0](“开始”=>2018年4月18日,“结束”=>2018年4月19日)
我想在今天的基础上按开始日期订购活动, 因此,在示例中,“复活节派对”是第一个事件,因为第一个开始日期>今天日期。然后: (“复活节派对”、“StackOverflow会议”)
如何创建此类订单?如果您将
事件
关系转换为日期
模型,我认为您可以这样做
// Get dates with event, sort by start date
$datesWithEvents = Date::whereBetween($yesterday,$today)->orderBy('start')->with('event');
// you can Extract only events
$event = $datesWithEvents->pluck('event'); // I think you need to add "->with('event')" into the return event method on Date Model
// or directly return dates with events
return $datesWithEvents;
如果将
事件
关系转换为日期
模型,我认为您可以这样做
// Get dates with event, sort by start date
$datesWithEvents = Date::whereBetween($yesterday,$today)->orderBy('start')->with('event');
// you can Extract only events
$event = $datesWithEvents->pluck('event'); // I think you need to add "->with('event')" into the return event method on Date Model
// or directly return dates with events
return $datesWithEvents;
如果每个活动都有自己的日期,不是更容易吗?!如果每个活动都有自己的日期,不是更容易吗?!谢谢,这是一个好主意,我必须做一些测试,但我不明白你为什么使用whereBetween($昨天,$今天),我只需要放弃过去的日期(好的,我认为你需要按日期筛选。你可以删除或放置另一个方法嗯…我的实际查询类似于$events=Event::where('status','=',1)->with('dates'、'categories'、'Promotors')->get();//如何在您的事件采集中同时采集类别和启动程序?我无法标记为最佳答案,因为我似乎无法采集关系方法。采集在dates表中查找字段“event”,然后我得到“column not found”错误。在belongtomy关系中有一个数据透视表。不管它现在是否工作…我做了一些其他测试来尝试查询的其他信息。谢谢,这是一个好主意,我必须做一些测试,但我不明白你为什么使用whereBetween($昨天,$今天),我只需要放弃过去的日期(好的,我认为您需要按日期筛选。您可以删除或放置另一种方法嗯…我实际的查询类似于$events=Event::where('status','=','1)->with('dates','categories','promotors')->get();//如何在事件采集中同时采集类别和发起人?我无法标记为最佳答案,因为我似乎无法采集关系方法。采集在dates表中查找字段“event”,然后我得到“column not found”错误。在belongtomy关系中有一个pivot表。不管它现在是否工作……我做了一些其他测试来尝试查询的其他信息。