laravel 5 - 获取相关的模型值

时间:2016-02-15 11:11:20

标签: php laravel eloquent

我有两个模型,任务和项目。 在这两个模型中都有一个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关系,但我不确定。

  

编辑最后我明白了:

$projectNames = $missions->pluck('projects.*.name')->unique();

诀窍是使用*因为它是belongsToMany ...

1 个答案:

答案 0 :(得分:0)

$projectNames = $missions->lists('projects.name')->unique();

这将返回一个Collection对象。