У меня есть две модели, миссия и проекты. В обоих моделях есть функция belongsToMany (п: т) Когда я выбираю все миссии, я буду готов загружать все проекты тоже:laravel 5 - получить связанные значения модели
$missions = Mission::with('projects')->get();
Теперь я хочу, чтобы все соответствующие проекты от каждой миссии а как отдельный результат.
Я имею в виду, если у меня есть 3 миссии, и все миссии принадлежат к ОДНОМ проекту, я хочу это имя проекта в массиве.
Но если миссия 1 принадлежит к проекту 1 и миссия 2 принадлежит к проекту 2, я хочу получить массив имен проекта 1 и 2.
Но как я могу это сделать? Я стараюсь это, но не везет:
$array = $missions->toArray();
$projectNames = array_pluck($array, 'projects.name');
Также я стараюсь это:
$missionIDs = $missions->pluck('id');
дать мне все корочки миссий .. но я стараюсь, чтобы получить соответствующие названия проекта (belongsToMany), так Я тоже пробую это:
$projects = $missions->pluck('projects')->unique();
дает мне проекты .. но не уникальные .. это странно. И это не работает, я получаю пустую коллекцию, если я пытаюсь выбрать только projectnames:
$projectNames = $missions->pluck('projects.names')->unique());
Я думаю, что проблема является п: м соотношения между проектом и миссией, но я не уверен.
EDIT Наконец я получил его:
$projectNames = $missions->pluck('projects.*.name')->unique();
Хитрость заключается в том, чтобы использовать *, потому что это belongsToMany ...
Я получаю пустую коллекцию, если я использую ваш код после моих $ mission = Mission :: with ('projects') -> get(); : Коллекция {# 488 #items: массив: 1 [ 0 => нулевой ] } – goldlife
Можно ли вставить весь код? –
Весь соответствующий код: $ mission = Mission :: with ('projects') -> get(); Это дает мне результат во многих миссиях, связанных с проектами в «проектах». И я хочу только уникальные имена проектов всех миссий ... Я пытаюсь это с помощью -> pluck ('projects.name') -> unique(); но я получаю только пустую коллекцию. с -> pluck ('projects'); Я получаю проекты, но не уникальные, а не только имена проектов. – goldlife