更新和更新的模型事件将被忽略

时间:2014-06-24 05:37:07

标签: php laravel eloquent

为什么updating为空时会忽略updatedgetDirty()模型事件?

如果模型没有变化,并不意味着我没有更新其关系。

更新

以下代码:

public function updating(Eloquent $model)
{
    $history = new ContentHistory($model->getOriginal());
    $history->added_on = new DateTime;        
    $model->history()->save($history);
}

如果getDirty()为空,则永远不会触发。我已将$touches = ['content']添加到ContentHistory模型中,但无效。

1 个答案:

答案 0 :(得分:0)

检查Touching Parent Timestamps

更新任何相关模型时,如果要在更新子模型时更新父级的时间戳,则只需使用protected $touches = array('modelname');属性。例如,如果您拥有Post模型并且其子模型为Comment,并且您要更新Post模型(仅updated_at时间戳字段),则添加$touches模型中的Comment属性/数组,并在该数组中添加Parent模型的名称,如:

class Comment extends Eloquent {

    protected $touches = array('post');

    public function post()
    {
        return $this->belongsTo('Post');
    }
}