Eloquent unique()方法需要返回最后一项

时间:2016-03-01 06:30:25

标签: mysql collections eloquent laravel-5.2

我正在使用Eloquent unique() collections方法返回唯一项。它确实从集合中返回第一个唯一项。但是,我要求从集合中返回最后一个唯一项目。

$collection = collect([1, 1, 2, 2, 3, 4, 2]);
                      ~~~   ~~~

$unique = $collection->unique();

$unique->values()->all()

上面的代码将返回// [1, 2, 3, 4]。如您所见,unique()方法返回第一个12,而不是最后一个12

我也可以使用unique()方法进行回调。但是,我无处可去,该算法应如何从集合中返回最后一个唯一项目。

1 个答案:

答案 0 :(得分:0)

我自己已经弄清楚了。这个答案适用于那些像我一样有问题的人:

$diary = Diary::orderBy('id', 'desc')->get()->unique('workId')->values()->all();

return $diary;

在上面,我使用了orderBy()方法来更改集合的顺序。 get()方法将结果作为集合返回。 unique()方法用于仅从集合中返回唯一项。 values()方法返回一个新集合,其中键重置为连续整数,all()方法返回完整集合。