Gia*_*o M 2 collections reverse laravel laravel-query-builder
我需要获取按数据排序的表的最后10条记录,并将它们反转。
这是相反的代码:
$eventi = \App\Model::with('relation_1', 'relation_2')
->orderBy('data_ora', 'desc')
->take(10)
->get();
Run Code Online (Sandbox Code Playgroud)
如果我记录结果,我将得到:
[{"id":12297,"stato_batteria":null,"data_ora":"2018-05-03 11:40:02" ...
Run Code Online (Sandbox Code Playgroud)
反向代码为:
$eventi = \App\Model::with('relation_1', 'relation_2')
->orderBy('data_ora', 'desc')
->take(10)
->get()
->reverse();
Run Code Online (Sandbox Code Playgroud)
如果我记录结果,我将得到:
{"9":{"id":1410,"stato_batteria":null,"data_ora":"2018-04-05 14:16:48" ...
Run Code Online (Sandbox Code Playgroud)
如您所见,集合已更改,我不知道为什么。
当你这样做时:
$eventi = \App\Model::with('relation_1', 'relation_2')
->orderBy('data_ora', 'desc')
->take(10)
->get();
Run Code Online (Sandbox Code Playgroud)
您会得到一个Collection包含这些值的对象。底层数组中值的键将是数字,即0, 1, 2, ... 9。现在当你做的时候:
$eventi = \App\Model::with('relation_1', 'relation_2')
->orderBy('data_ora', 'desc')
->take(10)
->get()
->reverse();
Run Code Online (Sandbox Code Playgroud)
您将以相反的顺序返回相同的集合。该reverse方法创建一个新集合,但保留原始集合的键。因此,在这种情况下,您将首先看到最后一项,并且键将为9, 8, 7, ... 0。在 PHP 中,如果数组键不是整数,从 开始按升序排列0,则假定它是关联数组。因此,当您将集合输出为 JSON 时,您会看到它表示为一个对象。
忽略集合中键的一种方法是使用values,以便创建一个新0, 1, 2, ... 9集合(使用升序数字键,即),仅使用初始集合的值:
$eventi = \App\Model::with('relation_1', 'relation_2')
->orderBy('data_ora', 'desc')
->take(10)
->get()
->reverse()
->values();
Run Code Online (Sandbox Code Playgroud)