Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按关系字段对集合进行排序_Php_Laravel_Eloquent - Fatal编程技术网

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表。不管它现在是否工作……我做了一些其他测试来尝试查询的其他信息。