laravel模型属性数组何时填充?

时间:2017-02-09 17:55:34

标签: php mysql eloquent laravel-5.3 laravel-eloquent

我们将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属性时填充属性数组?当属性在模型的生命周期中填充时?如果我们需要从现有数据库字段的访问者访问属性,也可以安全使用吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

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

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