我想覆盖以下关系属性:
$article['tags'] = $article->tags->pluck('title');
return compact('article');
它失败,因为它将tags属性作为对象数组而不是标题字符串数组返回。 API使用者需要该表单中的数据。这也减少了有效载荷的大小。
我目前的工作是添加另一个属性并取消设置原始属性。
$article['tagged'] = $article->tags->pluck('title');
unset($article['tags']);
return compact('article');
但我希望它更简单明了。
答案 0 :(得分:1)
对于覆盖使用setRelation(key, value)
:
$article->setRelation('tags', $article->tags()->pluck('title'));
^这假设您没有预先加载关系。如果您这样做,只需从->tags()
移除括号(与您的问题相同:->tags->pluck('title')
)。
如果没有设置单一关系,则没有可用的方法。您可以使用->setRelations(array)
。
答案 1 :(得分:1)
使用关系方法tags()
获取title
数组。
$article['tags'] = $article->tags()->pluck('title');