当前位置: 首页 > 知识库问答 >
问题:

将计算字段添加到Laravel模型查询

庾和昶
2023-03-14

我有一个控制器,它有这样一个查询:

$post = Post::find($id);
$comments = $post->comments;

一篇文章有许多评论,而一篇评论属于一篇文章。comments模型有一个id、comment、tag字段。

我想做的是,对于像这样的任何查询,模型都会返回字段id、注释、标记和tag_translated,后者只是使用朗外观对标记的翻译。

我可以通过在控制器上使用for来解决这个问题,它迭代$注释并添加字段,但是我必须为每个需要tag_translared字段的控制器这样做。有没有办法要求模型包含这样一个领域?

共有3个答案

柳项明
2023-03-14

我也面临着同样的问题,你只需要补充两点:

第一个是appends字段:

protected $appends = ['field'];

第二个是"getter":

public function getFieldAttribute()

在方法名称的末尾,您需要添加“Attribute”后缀,就是这样。

解鸿运
2023-03-14

有吗?只需将此添加到您的注释模型中即可

public function getTagTranslatedAttribute()
{
    return Lang::methodYouWish($this->tag);
}

然后可以从注释实例访问此属性

$comment->tag_translated;

编辑

您可以修改toArray方法,只需将其添加到Comment类中即可

protected $appends = ['tag_translated'];

然后

$comment->toArray();
郗阳德
2023-03-14

将此添加到您的注释中模型:

protected $appends = ['tag_translated'];

public function getTagTranslatedAttribute()
{
    return 'the translated tag';
}

希望这能有所帮助。

 类似资料:
  • 问题内容: 我有一个简单的模型,其中包括, 和领域。 在管理方面,可能在其他地方,我想显示为: 对我而言,执行此操作的逻辑位置是在模型中通过创建一个这样的计算字段: 最终,我认为我需要以字符串形式获取名称字段的值。我得到的错误是。字符串所需的值。我不知道这是什么意思。 一定有一种简单的方法可以做到这一点,我敢肯定我不是第一个想要这样做的人。 编辑:下面是我的代码修改为丹尼尔的答案。我得到的错误是:

  • 我用的是Django 2。十、 我有一个用于验证请求的序列化程序。(不是ModelSerializer) 是对模型的引用。 我希望用户在字段中传递数据库id,但在验证后,got被转换为对象。 我试图重写方法,并将对象分配给字段,但它给出了错误

  • 本文向大家介绍silverstripe 将字段添加到DataObject,包括了silverstripe 将字段添加到DataObject的使用技巧和注意事项,需要的朋友参考一下 示例 您可以使用该DataExtension机制将额外的数据库字段添加到现有的DataObject中: 并应用扩展名: 这将HairColour作为字段添加到Member对象。

  • 问题内容: 有没有一种方法可以将created_at和updated_at字段添加到猫鼬模式中,而不必每次调用新的MyModel()时都将其传递? created_at字段将是日期,并且仅在创建文档时添加。每当在文档上调用save()时,updated_at字段都将被更新为新日期。 我已经在模式中尝试过此操作,但是除非我明确添加,否则该字段不会显示: 问题答案: 从Mongoose 4.0开始,您

  • 若要添加一个新的表,点击工具栏的 “表”按钮,并点击画布的任意位置。你可以从浏览器的模型选项卡添加一个现有的表,简单地从模型选项卡拖放表到画布。 如果图表符号设置为默认, 图标代表字段为一个主键。而 图标则代表字段为一个索引。 【注意】如果你按住 Control 键并点按字段,你可以选择添加、插入、删除、重命名字段及设置字段为主键。 在画布中表对象的弹出式菜单选项包括: 选项 描述 设计表 在“表

  • 若要添加一个新的表,点击工具栏的 “表”按钮,并点击画布的任意位置。你可以从浏览器的模型选项卡添加一个现有的表,简单地从模型选项卡拖放表到画布。 如果图表符号设置为默认, 图标代表字段为一个主键。而 图标则代表字段为一个索引。 【注意】如果你右击字段,你可以选择添加、插入、删除、重命名字段及设置字段为主键。 在画布中表对象的弹出式菜单选项包括: 选项 描述 设计表 在“表设计器”中编辑表结构,例如