Как получить все уникальные атрибуты у коллекции через связь many-to-many?
Кажется я написал в вопросе чушь)) Но постараюсь объяснить подробнее. Реализую на laravel. Мне нужно получить все доступные атрибуты "цвет" у коллекции товаров. Я делаю вот так (связь многие-ко-многим через промежуточную таблицу):
$colors = $products->pluck('colors')
->unique();
Но так не работает. Потому как в таком случае unique применяется к первым вложенным коллекциям (а то сами товары), а у каждого товара своя вложенная коллекция атрибута "цвет".
То есть, если вызвать dd($products), то получаю так (Лишнее убрал для читабельности):
Illuminate\Pagination\LengthAwarePaginator {#1594 ▼
#total: 7
#items: Illuminate\Database\Eloquent\Collection {#1814 ▼
#items: array:7 [▼
0 => App\Models\Product {#1681 ▼
#fillable: array:17 [▶]
...
#attributes: array:20 [▶]
...
#relations: array:9 [▼
"colors" => Illuminate\Database\Eloquent\Collection {#1760 ▼
#items: array:2 [▼
0 => App\Models\Color {#1782 ▼
...
#attributes: array:12 [▼
"id" => 1
"name" => "синий"
"title" => "siniy"
]
...
1 => App\Models\Color {#1778 ▼
...
#attributes: array:12 [▼
"id" => 3
"name" => "красный"
"title" => "krasnyy"
]
...
1 => App\Models\Product {#1649 ▶}
...
У каждого товара есть цвет. У кого-то указан, у кого-то не указан, у кого-то указано несколько. Мне нужно получить уникальные цвета (с id, title, name) без повторений.
Как мне правильно это реализовать?
Источник: Stack Overflow на русском