Eloquent - 实例化后默认添加额外属性

时间:2017-07-16 06:23:10

标签: php laravel laravel-5 eloquent laravel-5.4

我想默认为Eloquent模型添加一个新属性。例如,queryTime属性。

因为必须在实例化后立即评估属性的值,所以getExtraAttribute()方法在我的情况下不起作用。

我尝试添加:

protected $appends = ['time'];
public function __construct(array $attributes = [])
{
    $attributes['time'] = time();
    parent::__construct($attributes);
}

...对于模型但它没有工作。 $instance->time只返回null

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:1)

使用简单的类属性,设置其默认值,然后为其创建一个访问器,如下所示:

protected $time;

protected $appends = ['time']; // only needed if you need `time` in the json/array representation of the model.

public function __construct(array $attributes = [])
{
    $this->time = time();

    parent::__construct($attributes);
}

public function getTimeAttribute()
{ 
    return $this->time;
}