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

什么时候填充laravel模型属性数组?

花和宜
2023-03-14

我们将laravel应用程序用于服务器站点restful应用程序。我们有一个存储数据的MySql数据库。为了访问数据,我们使用了laravel模型。有时我们可能需要创建自定义属性或使用访问器和变异器操作属性。事情是这样的。有时我们需要使用访问器从多个属性计算数据。例如,如果该表包含一个名为“到期日”的字段,并且我们希望定义一个自定义属性来指示到期日是否已过,那么我们将使用如下自定义属性:

protected $appends = array('is_late');

public function getIsLateAttribute()
{
    return (Carbon::now() > Carbon::parse($this->attributes['due_date']));
}

我的问题是:是否保证属性数组将在我们获取到期日属性的位置填充?当属性在模型的生命周期中填充时?如果我们需要从现有数据库字段的访问器中访问属性,是否也可以安全使用?

非常感谢。

共有1个答案

东方权
2023-03-14

从数据库加载模型时,$attributes属性将填充模型的数据。因此,当您访问模型对象时,所有属性都已设置。

另一方面,$appends变量中列出的属性是在现有模型转换为数组时追加的,因此您可以安全地假设$Attributes在那时已经设置好了。

 类似资料:
  • 我无法为第二个请求获取ModelAtort。我的第一个请求是initForm()方法,我准备了命令对象并能够在jsp中显示命令。 通过initForm()我正在填充命令,并在执行ajax调用时在editForm中填充所需的命令。 这是我的Spring表格 我的ajax请求: 在editStudentDetails()方法中,我有方法ajax调用来调用控制器的editForm()。 这是我的控制器:

  • 问题内容: 我想将JPA2 Criteria API与元模型对象一起使用,这似乎很简单: 但是这个Root.get总是抛出一个。是由Hibernate自动生成的,看起来像 但显然从未有人居住。 我是否缺少框架初始化步骤? 编辑: 这是崩溃时我如何使用JPA和元模型的摘要: (是一个类,所以我就在前面)和相关的堆栈跟踪: 编辑2: 在JBoss EntityManager指南中,我可以看到 当构建H

  • 以前我使用过的ORM将数据库列直接映射到类属性,这允许您查看特定的属性可见性,就像您通常会限制对某些属性(例如密码)的访问一样。 有了雄辩,我似乎无法复制这一点,因为数据库列映射到不包含可见性的内部属性数组。 我的愿望是将用户密码的访问范围仅限于对象,即私有。 设置具有可见性的类属性不起作用,因为该属性超出了雄辩模型属性的范围,因此该属性未映射到列。 雄辩的$隐藏和$保护属性不起作用,因为它们处理

  • 问题内容: 因此,首先要设置场景: HTML CSS 这将在所有现代浏览器中生成如下所示的内容: CSS内部宽度测试,显示内箱超出了容器 现在,我知道这是符合标准的行为(正如我之前所知道的,但在本文中再次确认,并且我还知道是否在内部CSS声明中包含以下代码: …它将采用“边界框”模型,并得到对我来说似乎更直观的行为,但我只是发现自己试图从逻辑上论证为什么这样做是合理的,而我却无法做到。 对于我来说

  • 问题内容: 这个bean的“状态”: 使用ajax“成功”回调通过电线发送: 这里需要注释@JsonProperty吗?使用它的好处是什么?我想我可以删除此注释而不会引起任何副作用。 在https://github.com/FasterXML/jackson-annotations/wiki/Jackson- Annotations 上阅读有关此注释的信息我不知道何时需要使用此注释? 问题答案: