Я столкнулся с небольшой трудностью в поиске лучшего способа получить вложенные отношения через два отношения многие-ко-многим.
У меня есть 3 модели: статья, ключевое слово и тема со следующими отношениями:
Статья <-> Ключевое слово (много ко многим);
Статья <-> Тема (много ко многим).
То, что я пытаюсь сделать, это получить ключевые слова одного предмета на основе всех статей предмета, чтобы я мог отобразить их в виде пузырька с масштабируемым размером.
Код пока:
$subject = Subject::with('articles.keywords')->find($id);
$keywordsArray = $subject->articles->pluck('keywords');
$keywords = (new Collection($keywordsArray))->collapse()->groupBy('id');
return $keywords; // returns the collection with all the duplicate keywords
return $keywords->unique('id') // returns unique keywords.
Я знаю, чтобы вернуть отображение счетчика из коллекции следующим образом:
$keywordsCount = (new Collection($keywordsArray))->collapse()->groupBy('id')->map(function($item, $key){
return $item->count();
});
return $keywordsCount; // returns ex: {"1":2,"2":2,"3":2,"6":1}
Все работает, единственный вопрос, который остается: как мне объединить уникальные ключевые слова с $wordsCount, или, как лучше всего использовать эти 2, чтобы я мог изменить размер пузыря ключевого слова на основе этого количества.
Большое спасибо заранее и божья скорость.