Laravel getDirty()在不应该返回时为空

时间:2014-04-03 20:15:19

标签: php laravel laravel-4 eloquent

想象一下具有如下属性的雄辩模型:

class Campaign extends Eloquent
{
    protected $softDelete = true;
    protected $dates = ['started_at', 'ended_at'];
}

可以推断,该表具有created_at_updated_at和deleted_at的标准时间戳。它还有两个 date 字段:started_at和ended_at。在我的应用程序的某处,我正在尝试更新两个额外的日期:

$campaign->started_at = Carbon::parse(Input::get('activate-start', '+1 week'))->toDateString();
var_dump($campaign->getOriginal('started_at'), $campaign->started_at);
var_dump($campaign->getDirty());

第一个var_dump将原始值与当前值进行比较,显示值的差异。但是,getDirty()返回一个空数组。因此,$campaign->save()在不更新数据库的情况下返回true。有没有人遇到过这个?

1 个答案:

答案 0 :(得分:1)

我认为通过更改$ guarded属性可以解决问题。我现在是:

protected $guarded = ['id', 'created_at', 'updated_at', 'deleted_at'];