我有一个控制器,它有一个查询,例如:
$post = Post::find($id);
$comments = $post->comments;
如果帖子有很多评论且评论属于一个帖子。评论模型有id,comment,tag字段。
我想要做的是,对于任何这样的查询,模型返回字段id,comment,tag和tag_translated,其中后者只是使用Lang外观的标签转换。
我可以通过在控制器上使用for来解决这个问题,该控制器遍历$ comments并添加字段,但是我必须为需要tag_translared字段的每个控制器执行此操作。有没有办法让模型包含这样一个字段?
答案 0 :(得分:13)
在Comment
模型中添加此内容:
protected $appends = ['tag_translated'];
public function getTagTranslatedAttribute()
{
return 'the translated tag';
}
希望这有帮助。
答案 1 :(得分:7)
是的吗?只需将其添加到您的Comment
型号
public function getTagTranslatedAttribute()
{
return Lang::methodYouWish($this->tag);
}
然后您可以从评论实例
访问此属性$comment->tag_translated;
修改强>
您可以修改toArray
方法,只需将其添加到Comment
类
protected $appends = ['tag_translated'];
然后
$comment->toArray();
答案 2 :(得分:1)
我遇到了同样的问题,您只需要添加两件事:
第一个是附加字段:
protected $appends = ['field'];
第二个是“ getter”:
public function getFieldAttribute()
在方法名称的末尾,您需要添加“ Attribute”后缀,仅此而已。