2016-03-01 77 views
-1

我正在使用Eloquent unique()集合方法返回唯一項目。它確實返回集合中的第一個唯一項目。但是,我需要從集合中返回最後一個唯一項目。獨特的()方法需要返回最後一項

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

$unique = $collection->unique(); 

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

上述代碼將返回// [1, 2, 3, 4]。如您所見,unique()方法返回第一個12,而不是最後一個12

我也可以用unique()方法使用回調。但是,我無法知道該算法應該如何工作以從集合中返回最後一個唯一項目。

+0

我很困惑你說什麼「返回第一個1和2,而不是最後1和2」。它返回'[1,2,3,4]'那麼你最後的'1'和'2'是什麼意思?如果你需要最後的項目,那麼你可以讀取數組中的最後一項。 –

+0

考慮你在這樣一個集合中有兩個項目。 ''[1,1]'。現在,如果使用'unique()'集合方法,它將返回'1'。但是,哪個'1'會返回?從集合開始的'1',我想從集合的末尾開始'1'。 –

+0

重要嗎?它是一樣的權利?獨特意味着獨特。 –

回答

0

我已經弄明白了。這個答案是對那些誰是有像我一樣的問題:

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

return $diary; 

在上面,我使用了orderBy()方法來改變收藏的順序。 get()方法將返回結果作爲集合。 unique()方法用於僅返回集合中的唯一項目。 values()方法返回一個新的集合,並將鍵重置爲連續的整數,並且all()方法返回完整的集合。

相關問題