Laravel,雄辩的,碳添加时间问题

Laravel,雄辩的,碳添加时间问题,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,在我的一个模型上,我使用created_atdata来计算另一个名为expires的字段的值。。碳做这个手术。。代码是这样的 $membership = New Persons; $membership->approver = 123; $membership->receiver = 7; $membership->plan = 'gold'; $membership->save(); $expires = clone $membership->created_a

在我的一个模型上,我使用
created_at
data来计算另一个名为expires的字段的值。。碳做这个手术。。代码是这样的

$membership = New Persons;
$membership->approver = 123;
$membership->receiver = 7;
$membership->plan = 'gold';
$membership->save();

$expires = clone $membership->created_at;
$expires->addHours(72);

$membership->expires = $expires;
$membership->save();
除了增加的小时数不是72外,操作正常

我的创建时间是2015-01-13 20:43:44,我的过期值是2015-01-17 01:43:43,而它应该是2015-01-16 20:43:44

为什么会发生这种情况?

尝试以下解决方案:

它利用有说服力的事件来设置
persons
模型的“expires”属性,更重要的是,避免了在模型上执行另一个
save()
操作的往返过程

class Persons extends eloquent {
    /*
    * Model events
    */
    public static function boot()
    {
        parent::boot();
        static::creating(function($model){
            $model->expires = Carbon::now()->addHours(72);
        });
    }
}
如果expires属性取决于其他因素,请使用以下访问器,而不是将其保存到数据库中

class Persons extends eloquent {
    //this appends the expires virtual attribute to your model.
    //This attribute is not saved to the DB
    protected $appends = array('expires');

    //Expires accessor
    public function getExpiresattribute()
    {
        return $this->updated_at->addHours(72);
    }
}

嗯,我会试试看它是如何影响时代的创造的。我必须看看它在我需要的整个应用程序功能方面是否可行。我的expires值也必须随着应用程序中其他位置的updated_的更改而更新。对于如何创建和更改expires,还有其他注意事项。一般来说,不管我的应用程序如何,这都是一个有趣的想法。在这种情况下,最好使用带有虚拟属性的
访问器
函数。如果更新了
persons
”子项,则时间戳处的
persons
updated_也可以自动更新:请参阅