簡體   English   中英

將計算字段添加到Laravel模型查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM