如果没有更改值,laravel update不应该做任何事情

时间:2016-02-08 13:34:12

标签: laravel laravel-5

如果我打开一个表单进行编辑而不更改任何值只需点击提交按钮进行更新,它会更新表中的行,即它会更改updated_at时间,甚至会在bootXXXX(static::saving(function($model) {})函数中执行一些代码。

我不希望这种情况发生。

我如何找到如果用户没有改变任何内容并且其空白提交按钮命中?

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

谢谢, ķ

1 个答案:

答案 0 :(得分: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! 
});