2016-02-08 14 views
0

如果我打开一个窗体来编辑和没有改变任何值只需点击提交按钮来更新,它更新表中的行,即它更改updated_at时间,甚至执行一些代码bootXXXX(static::saving(function($model) {})功能。laravel更新不应该做任何事情,如果没有值改变

我不希望发生这种情况。

我怎么找到如果用户没有改变,它的空白提交按钮命中?

当然,在更新之前,我可以获取当前值并将它们与输入$request->all()进行比较并决定是否更新,但有没有更好的方法来实现这种laravel方式?

感谢, ķ

+0

有没有办法找出谁投下了这个问题。如果你有理由,你应该只被允许投票。看到没有理由的投票是非常令人沮丧的。 – karmendra

回答

0

你有2种方法之一是getDirty()使用该改变输入值,你会得到电流,另一个是getOriginal()如果你使用,你会得到你有什么以前的数据

通过使用这两种方法,我在这里举一个例子,可能会帮助你

static::saving(function($model) 
{ 
foreach($model->getDirty() as $attribute => $value){ 
    $original= $model->getOriginal($attribute); 
    echo "Changed $attribute from '$original' to '$value'<br/>\r\n"; 
} 
return true; //if false the model wont save! 
});