在 Eloquent ORM 中向模型添加字段

Posted

技术标签:

【中文标题】在 Eloquent ORM 中向模型添加字段【英文标题】:Adding fields to a model in Eloquent ORM 【发布时间】:2013-05-06 17:41:58 【问题描述】:

我在一个项目中使用 Eloquent,基本上我有一个 Author 模型,它有姓名、电子邮件等。

我有$author->created_at,$author->name, 等。

我想要的是对象中始终存在的更多字段,例如:$author->created_at_formatted, 基本上是 date(format, created_at)

关于如何在课堂上做到这一点有什么想法或提示吗? 谢谢。

【问题讨论】:

【参考方案1】:

模型本身不应该负责使数据对于视图之类的东西“漂亮”。许多人会选择在控制器甚至视图中执行此操作。我建议您研究一下“演示者”以及如何使用它们来转换和操作视图数据。

有可用于 Laravel 4 的 existing presenter packages,您可以立即开始使用(我建议您这样做)。

【讨论】:

【参考方案2】:

我不知道是否有办法创建您自己的自动填充列,但如果您只需要“created_at_formatted”列,您只需将以下内容添加到您的模型中即可更改 created_at 的格式和updated_at 列:

public function freshTimestamp()

    // Your custom timestamp format
    return date("Y-m-d H:i:s");

【讨论】:

【参考方案3】:

你需要了解 eloquent 是如何工作的,以及它的主要目的是什么。

它只是一种通过对象轻松与数据库表交互的方式(它是一个对象关系映射器,即将关系数据库表映射到对象)

如果您希望它有另一个字段,则必须将该字段添加到您的数据库表中。

但是,如果其他字段是 ANOTHER 表的一部分,则可以使用 join() 查询方法。将添加两个表中的字段。如果由于某种原因您无法修改作者表,您可以创建另一个包含所需字段的表,然后进行连接。

如果您在加入时需要更多帮助,请告诉我,我会在此处添加代码。

【讨论】:

以上是关于在 Eloquent ORM 中向模型添加字段的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent ORM 无法正确返回模型的关系

如何在 Django 中向 ModelForm 添加非模型字段?

如何在 Django 中向模型添加临时字段?

如何在 Django 中向 ModelForm 添加外键字段?

如何在 Eloquent ORM 中从 JSON 中保存具有相关记录的模型

如何在 Django 中向多对多关系中添加字段?