Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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 Laravel-对Json口若悬河,然后在Json对象上排序不起作用_Php_Arrays_Json_Laravel_Eloquent - Fatal编程技术网

Php Laravel-对Json口若悬河,然后在Json对象上排序不起作用

Php Laravel-对Json口若悬河,然后在Json对象上排序不起作用,php,arrays,json,laravel,eloquent,Php,Arrays,Json,Laravel,Eloquent,我有一个json值,我希望是sorty,但出于某种原因,它不起作用 [ { "id": 15028, "order_id": 342, "user_id": 3, "status": "1", "priority":

我有一个json值,我希望是sorty,但出于某种原因,它不起作用

    [
        {
            "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);
但是,我没有得到排序列表。我想要实现的是,就像我在一个有说服力的模型上运行两到三个orderBy一样,比如orderBy('status')->orderBy('priority')->get()。。我想在这个json列表上运行相同的两个排序


提前谢谢。

我想知道当您选择不同的排序方向时会有什么结果

$order_list = $order_list->sortByDesc('status'); $order\u list=$order\u list->sortByDesc('status');
如果要按多个字段排序,则可以尝试使用回调方法进行排序:

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

我想出来了。实际上我们不需要像@brokedid建议的那样回电话。我们可以像下面这样做

$order_list->sortBy('status')->sortBy('priority')->values()->all();

所以我缺少了“->values()->all()”部分。我希望将来如果有人遇到同样的问题,他们可以从中得到提示。

是的,您在第三行缺少一个
您存储的确切输入和从redis获得的确切输入是什么。您在redis中有json,它返回json,然后您尝试对json字符串进行排序?@VinayakSarawagi我提到的json,这正是存储在redis中的东西。我从redis那里得到了一个更改,然后想通过“状态”或“优先级”对其进行再次排序@lagbox是的,这是正确的。我只想在状态或优先级键值发生更改时进行json排序。