Laravel Eloquent分配给模型属性

时间:2018-04-24 05:33:47

标签: php laravel laravel-5

我想覆盖以下关系属性:

$article['tags'] = $article->tags->pluck('title');
return compact('article');

它失败,因为它将tags属性作为对象数组而不是标题字符串数组返回。 API使用者需要该表单中的数据。这也减少了有效载荷的大小。

我目前的工作是添加另一个属性并取消设置原始属性。

$article['tagged'] = $article->tags->pluck('title');
unset($article['tags']);
return compact('article');

但我希望它更简单明了。

2 个答案:

答案 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');