Laravel多对多关系只能抓住一种价值

时间:2018-07-31 18:30:07

标签: php laravel relation

我在ExpenseTag之间有很多联系。现在,我只想从与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();

但是两者都不起作用。有办法使它工作吗?

2 个答案:

答案 0 :(得分:5)

尝试一下

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

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

答案 1 :(得分:3)

这是您要找的吗?

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

您可以在这里进一步阅读: https://laravel.com/docs/5.6/collections#method-pluck