提问者:小点点

Laravel-eloquent到Json,然后sortBy到Json对象不工作


我有一个json值,我想把它整理一下,但是由于某种原因,它不能工作。

    [
        {
            "id": 15028,
            "order_id": 342,         
            "user_id": 3,
            "status": "1",
            "priority": "1",
            "donedate": null,
            "user": {
                "id": 3,
                "name": "Max"
            }
        },
        {
            "id": 15030,
            "order_id": 341,         
            "user_id": 4,
            "status": "2",
            "priority": "1",
            "donedate": null,
            "user": {
                "id": 4,
                "name": "Jon"
            }
        }
    ]

这个jSon结构是使用$object->toJSON()进行Laravel雄辩对象转换的结果;

现在我将此输出保存在Redis缓存中。 我想要的是,当任何订单的状态和或优先级发生变化时,我想要对这个jSon进行排序,并将其存储回Redis中。

$order_list = collect($json_decoded_with_updated_values);
$order_list = $order_list->sortBy('status')->sortBy('priority');
Redis::set(\GuzzleHttp\json_encode($stich_list_in_collection));
Redis::set("orders_list", $orders_list, 302400);

但是,我没有得到排序列表,我想知道为什么。 我是不是漏掉了什么?

附注。 我试过使用单一的sortBy('status')和或sortBy('priority'),但仍然不起作用。 还尝试了->sortby('status')->values()->all();

提前谢谢你。


共2个答案

匿名用户

如果要按多个字段进行排序,那么可以尝试使用回调方法进行排序:

$orderedList = $unorderedList->sortBy(function($item) {
  return $item->priority.'-'.$item->status;
});

匿名用户

我想知道当你选择一个不同的方向时会有什么结果。

$order_list = $order_list->sortByDesc('status');