我有一个控制器,它有这样一个查询:
$post = Post::find($id);
$comments = $post->comments;
一个帖子有很多评论,一个评论属于一个帖子。评论模型有一个id、评论和标签字段。
我想做的是,对于任何像这样的查询,模型返回字段id、comment、tag和tag_translating,后者只是使用Lang facade对标记进行翻译。
我可以通过在控制器上使用for来解决这个问题,该控制器迭代$comments并添加字段,但是我必须为需要tag_translared字段的每个控制器执行此操作。是否有办法要求模型包含这样一个字段?
将此添加到您的Comment
模型:
protected $appends = ['tag_translated'];
public function getTagTranslatedAttribute()
{
return 'the translated tag';
}
有吗?只需将此添加到您的Comment
模型
public function getTagTranslatedAttribute()
{
return Lang::methodYouWish($this->tag);
}
则可以从注释实例
访问此属性$comment->tag_translated;
编辑
您可以修改您的toArray
方法,只需将其添加到Comment
类
protected $appends = ['tag_translated'];
然后
$comment->toArray();
我也面临着同样的问题,你只需要添加两件事:
第一个是追加字段:
protected $appends = ['field'];
第二个是"getter":
public function getFieldAttribute()
你需要在方法名的后面加上"Attribute"后缀,就这样了