php - 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();
但两者都不起作用。有没有办法让这个工作?
解决方案
尝试这个
$tags = $expense->tags->pluck('name')->toArray();
或者
$tags = $expense->tags->pluck('name')->all();
推荐阅读
- php - PHPMailer 无法解析
- python - 在工作中,看到python程序员在一个类中定义一个空类来获得“点结构”。这很糟糕吗?
- java - 为 convertSendAndReceive 添加已发布的确认
- jaxb - jaxb xml输出格式测试
- javascript - Silent YouTube Video Before It Plays
- javascript - 删除嵌套的 JavaScript 对象
- c++ - 我无法在 C++ 中运行 Gurobi(Clion、Mac OS)
- bash - BASH - 当 $@ 包含不存在的文件时如何使用 $@ 查找?
- r - r中的条件列拆分
- grails - 可以将 DomainObject 添加为 CommandObject 的属性吗?