当前位置: 首页 > 知识库问答 >
问题:

如何在Laravel 5.5中提交表单后知道模型是否发生了变化?

柳羽
2023-03-14

我有一个表单视图,用户可以在其中更改其名称。提交表格后,我需要知道姓名是否已更改。此时,代码结果始终为false(无更改),但数据库表已正确更新。

我的用户模型有:

   protected static function hasChanged()
{
    self::updating(function($user){
      if($user->isDirty())
      {
            return true;
      }else
      {
          return false;
      }

    });
}

我的ProfileController收到了表单中的数据。

    public function updateProfile(Request $request)
{
    $usuario = new User;
    User::find(Auth::user()->id)->update($request->all());
    $message = User::hasChanged() ? "Data changed" : "No data changed";
    return redirect('home')->with('success', $message); 
}

在$message中,尽管用户更改了表单中的数据,但始终获得“无数据更改”。

我不知道这是不是最好的方法。

谢谢你帮我。

共有1个答案

邵飞白
2023-03-14

按照hasChanged()方法的设置方式,这实际上并不是在做您希望它做的事情。当前,在代码中,hasChanged()方法正在为每次调用对象时更新对象注册事件处理程序。这意味着hasChanged()实际上根本不返回任何内容,但从长远来看,它会给代码增加很多不必要的开销。

你要做的是把你的电话分成几个部分。当你打电话时:

->update($request->all());

这就是将请求中的值放入对象中,然后一次性保存所有值。您要做的是将值放入对象中,然后检查是否有任何更改,然后将其保存到数据库中。

看起来更像这样:

$user = User::find(Auth::user()->id);
$user->fill($request->all());
$message = $user->isDirty() ? "Data changed" : "No data changed";
$user->save();
return redirect('home')->with('success', $message); 
 类似资料:
  • 问题内容: 我有一个表格,基本上是上传一个文件。我要提交两次表格,第1次不包含多部分,第二次1次包含多部分。 但是我想先检查一下第一次提交表单是否成功,然后再进行第二次提交 引用@Vern后编辑 这是我的servlet部分。我在哪里确定它是否由多个部分组成。如果未将 resultType 存储到会话变量中,则返回, 现在,我要检查此“已 提交 ”或类似内容,然后第二次提交表格。 第二表单提交:在这

  • 问题内容: 我的页面上有几个按钮,但是我不确定如何知道单击了哪个按钮。这是我的两个按钮的标记: 问题答案: 使用类似如下的HTML表单: 使用的PHP代码如下所示: 您应该始终 假定或默认为第一个提交按钮以HTML源代码的形式出现 。实际上,在以下情况下,各种浏览器会可靠地发送带有发布数据的提交按钮的名称/值: 用户使用鼠标或定位设备从字面上单击提交按钮 或者将焦点放在“提交”按钮(它们在选项卡上

  • 我有一个带有,(”或)的表单,。。。下拉菜单()。。我想根据填充/检查的输入量显示不同的div。我写这篇文章是为了输入()按id选择输入id,但如何才能对和

  • 问题内容: 我试着用两个类来做图像分类。我有1000张照片 均衡的班级。当我训练模型时,我得到一个低常数的验证 准确性,但验证损失减少。这是一个过度装修的迹象还是 不合身?我还应该注意到,我正在尝试重新训练《盗梦空间》 具有新类和不同数据集的V3模型。 问题答案: 什么是过度装配 过度拟合(或欠拟合)发生在模型过于特定(或不特定)时 足够具体)的训练数据,并不能很好地推断出 真域。从现在起,我只想

  • 关于这个问题的答案。对我来说,使用此代码时会发生错误。我想知道从catch块中准确地发生了哪种错误。您应该通过捕捉错误类型来实现这一点,但我在jsonObject文档中没有看到枚举的错误类型 在swift中有没有一种方法可以做到这一点,或者我如何找到一个对象抛出的异常?

  • 问题内容: 嗨,我有一个表格,单击按钮后会更新。 项目更新后,不会删除表单字段中输入的信息。我想知道在udpat后可以在angularjs中添加什么以添加上述代码,以便它也可以清除。谢谢 问题答案: 您可以通过以下方式重置表单,但是如果要将模型对象绑定到输入,则还需要注意清除这些输入,即: 编辑 正如ToodoN-Mike所指出的,不要忘记设置 该标志以角度1.3引入。