首页 > 解决方案 > Laravel 多对多只从关系中获取一个值

问题描述

Expense我在和之间有一个多对多的关系Tag。现在我只想name从所有与Expense.

所以,假设我有一个Expense

$expense = Expense::first();

现在我可以轻松获取所有标签:

$tags = $expense->tags;

这会给我一个标签的集合。理想情况下,我想要一个标签名称数组:

array:5 [▼
  0 => "tag1"
  1 => " tag2"
  2 => " tag3"
  3 => " tag4"
  4 => " tag5"
]

现在我可以这样做:

$tags = $expense->tags;

$new_tags = [];

foreach($tags as $tag)
{
    $new_tags[] = $tag->name;
}

但是有没有更清洁的方法,尤其是不必使用foreach?我试过这样的事情:

$tags = $expense->tags->value('name')->toArray();

$tags = $expense->tags()->value('name')->toArray();

但两者都不起作用。有没有办法让这个工作?

标签: phplaravelrelation

解决方案


尝试这个

$tags = $expense->tags->pluck('name')->toArray();

或者

$tags = $expense->tags->pluck('name')->all();

推荐阅读