[英]Add a calculated field to Laravel model query
我有一個控制器,它有一個像這樣的查詢:
$post = Post::find($id);
$comments = $post->comments;
帖子有很多評論,評論屬於一個帖子。 評論模型有id,comment,tag字段。
我想要做的是,對於任何查詢,例如這個,模型返回字段id,comment,tag和tag_translated,其中后者只是使用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'];
第二個是“吸氣劑”:
public function getFieldAttribute()
在方法名稱的末尾,您需要添加“屬性”后綴,就是這樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.