我有两个模型,使命和项目。 在这两个模型中都有一个 belongsToMany 函数 (n:m) 当我选择所有任务时,我也会急切加载所有项目:
$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');
给我任务的所有 ID .. 但我尝试获取相关的项目名称 (belongsToMany),所以我也尝试这样做:
$projects = $missions->pluck('projects')->unique();
给我项目..但不是独一无二的..这很奇怪。 这不起作用,如果我尝试仅选择项目名称,我会得到一个空集合:
$projectNames = $missions->pluck('projects.names')->unique());
我认为问题在于项目和任务之间的 n:m 关系,但我不确定。
EDIT Finally I got it:
$projectNames = $missions->pluck('projects.*.name')->unique();
诀窍是使用 * 因为它属于 belongsToMany ...
最佳答案
$projectNames = $missions->lists('projects.name')->unique();
这将返回一个集合对象。
关于php - laravel 5 - 获取相关模型值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35407855/