0

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

protected $appends = array('is_late');

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

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

谢谢你。

4

1 回答 1

0

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

另一方面,$appends变量中列出的属性会在现有模型转换为数组时附加,因此您可以放心地假设此时已经设置了$attributes 。

于 2017-02-10T16:40:01.097 回答