我合并了两个Eloquent集合,产生了以下输出:
[
"2015-03-05 21:54:19" => 100
"2015-07-05 18:54:00" => 4
"2015-06-30 21:53:29" => 3
]
第一列是updated_at时间戳,最后一列是两个表的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);
我的问题是,我如何对数组排序,使它们按updated_at列降序排序?
按降序使用sortByDesc
$all = $jobs->merge($bids)->sortByDesc('updated_at');
升序使用sortBy
$all = $jobs->merge($bids)->sortBy('updated_at');
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