How to remove duplicates in collection?
38,418
Solution 1
$unique = $collection->unique();
Solution 2
$collection = collect([
['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'],
['name' => 'iPhone 5', 'brand' => 'Apple', 'type' => 'phone'],
['name' => 'Apple Watch', 'brand' => 'Apple', 'type' => 'watch'],
['name' => 'Galaxy S6', 'brand' => 'Samsung', 'type' => 'phone'],
['name' => 'Galaxy Gear', 'brand' => 'Samsung', 'type' => 'watch'],
]);
Then let's say you want the brand to be unique, in this case you should only get two brands 'Apple', and 'Samsung'
$unique = $collection->unique('brand');
$unique->values()->all();
/*
[
['name' => 'iPhone 6', 'brand' => 'Apple', 'type' => 'phone'],
['name' => 'Galaxy S6', 'brand' => 'Samsung', 'type' => 'phone'],
]
*/
This is taken from https://laravel.com/docs/master/collections#method-unique
Author by
Blablacar
Updated on January 22, 2021Comments
-
Blablacar over 3 years
I have collection in Laravel:
Collection {#450 ▼ #items: array:2 [▼ 0 => Announcement {#533 ▶} 1 => Announcement {#553 ▶} ] }
It is the same items. How ti delete one of them?
Full code is:
public function announcements() { $announcements = $this->categories_ann->map(function ($c) { return $c->announcements->map(function ($a) { $a->subsribed = true; return $a; }); }); $flattened = $announcements->groupBy("id")->flatten(); return $flattened; }