Php Laravel 5.1-对合并的有说服力的集合进行排序

Php Laravel 5.1-对合并的有说服力的集合进行排序,php,laravel,eloquent,Php,Laravel,Eloquent,我合并了两个雄辩的集合,以产生以下输出: [ "2015-03-05 21:54:19" => 100 "2015-07-05 18:54:00" => 4 "2015-06-30 21:53:29" => 3 ] 其中,第一列在时间戳处更新,最后一列是两个表的ID 我的代码如下: $jobs = $this->user->find($userId)->jobs()->lists('id', 'updated_at'); $bi

我合并了两个雄辩的集合,以产生以下输出:

[
    "2015-03-05 21:54:19" => 100
    "2015-07-05 18:54:00" => 4
    "2015-06-30 21:53:29" => 3
]
其中,第一列在时间戳处更新,最后一列是两个表的ID

我的代码如下:

$jobs = $this->user->find($userId)->jobs()->lists('id', 'updated_at');
$bids = $this->user->find($userId)->bids()->lists('id', 'updated_at');

$all = $jobs->merge($bids)->sortByDesc('updated_at');

dd($all);

我的问题是,如何对数组进行排序,使其按更新的列按降序排列?

Collections有一个名为flip()的方法,听起来它用值翻转键。在这种情况下,您只需在合并后翻转并按值排序,然后再次翻转即可获得原始集合

$all = $jobs->merge($bids)->flip()->sortByDesc('')->flip();
如果您只关心键,我真的建议您反转get语句,对值进行排序,并按排序顺序提取键

$jobs = $this->user->find($userId)->jobs()->lists('updated_at', 'id');
$bids = $this->user->find($userId)->bids()->lists('updated_at', 'id');

$all = $jobs->merge($bids)->sortByDesc('')->keys();
我也不知道您的模型是如何设置的,但您可能可以在一个查询中使用with()将作业和出价提取出来

$data = $this->user->find($userId)->with('jobs','bids').. //etc

对于降序,请使用
sortByDesc

$all = $jobs->merge($bids)->sortByDesc('updated_at');
对于升序,使用
sortBy

$all = $jobs->merge($bids)->sortBy('updated_at');