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_也可以自动更新:请参阅