php - laravel 5 - 获取相关模型值

标签 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 关系,但我不确定。

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/

相关文章:

php - 如果尚未定义新列,是否会使用 php 函数 "insert into"创建新列,或者返回错误?

php - 如何使用 codeigniter 将值传递给弹出窗口?

laravel - 对于大型Web应用程序,最佳Vue-Router最佳实践是什么?

php - Laravel 5.6 中嵌套关系的展平结果

php - Eloquent Attach() 处理非对象错误

php - 我需要按天显示自定义的输出,如下所示

php - 如何将 Symfony2.6 文件/文件夹权限/所有权恢复为默认值?

laravel - 访问 token : Revoke vs Delete

mysql - 加速 Laravel Eloquent/MySQL 查询

php - Laravel 如何做这个关系查询