php - Laravel 雄辩的多个查询
问题描述
我需要按日期对我的集合进行排序,然后按距离对具有相同日期的行进行排序。
当我处理状态和距离时,我已经完成了相同的过程,因为我知道我想要对集合进行排序的状态值,现在我无法修复它的值。
这是我的工作状态:
if($result){
if($data['status'] == true){
$result = $result->sortBy('listing.status')->values();
if($sqlDistance != null){
$res = $result->where('distance_km', '!=', null);
$resNull = $result->where('distance_km', '=', null)->all();
$statusNotPlanned = $res->where('listing.status', 0)->sortBy('distance_km')->values()->all();
$statusPlanned = $res->where('listing.status', 1)->sortBy('distance_km')->values()->all();
$statusDone = $res->where('listing.status', 2)->sortBy('distance_km')->values()->all();
$res = array_merge($statusNotPlanned, $statusPlanned, $statusDone);
$result = array_merge($res, $resNull);
}
return response()->json(['status' => 200,'type' => 'status', 'data' => $data, 'events' => (is_object($result)) ? array_slice($result->toArray(),$data['offset']*10,10) : array_slice($result,$data['offset']*10,10), 'cities' => $cities]);
}
现在我需要做同样的事情,但使用日期而不是状态:
这就是我现在的位置:
elseif($data['date'] == true ) {
$result = $result->sortBy('date_end')->values();
$res = $result->where('date_end', '!=', null)->all();
$resNull = $result->where('date_end', '=', null)->all();
$result = array_merge($res, $resNull);
return response()->json(['status' => 200,'type' => 'date', 'data' => $data, 'events' => (is_object($result)) ? array_slice($result->toArray(),$data['offset']*10,10) : array_slice($result,$data['offset']*10,10), 'cities' => $cities]);
}
这是我当前的输出:
{
date_end : 12/07/2018,
distance : 320km
},
{
date_end : 12/08/2018,
distance : 110km
},
{
date_end : 12/08/2018,
distance : 100km
},
{
date_end : 12/08/2018,
distance : 120km
},
{
date_end : 12/09/2018,
distance : 480km
}
这是所需的输出:
{
date_end : 12/07/2018,
distance : 320km
},
{
date_end : 12/08/2018,
distance : 100km
},
{
date_end : 12/08/2018,
distance : 110km
},
{
date_end : 12/08/2018,
distance : 120km
},
{
date_end : 12/09/2018,
distance : 480km
}
解决方案
有人在这个 Github问题上提出以下建议:
$result->sortBy(function($item) {
return [$item->date_end, $item->distance_km];
});
推荐阅读
- python - 连接python字典中的键值对
- django - 如何修复 Django API 中的“`.create()` 方法默认不支持可写嵌套字段”
- c++ - Error in c++: "terminate called after throwing an instance of 'std::length_error' what(): basic_string::_M_replace_aux"
- sql - 在 oracle sql 中执行涉及连接的更新语句
- javascript - Redux 调度问题(意外滚动)
- python - 获取每列最新的非 NA 值
- python - 如果我想忽略小值,如何以内存有效的方式乘以更大、更密集的 scipy.sparse 矩阵?
- python - 替换后如何在sympy中设置0,高于0
- java - 带有 Android Studio 的 Retrofit2:无法获得加油站的阵列
- django - 如何始终在 python django rest 框架中收听 amazon sqs