【问题标题】:How to know which fields were updated如何知道哪些字段已更新
【发布时间】:2016-03-05 20:13:55
【问题描述】:

我在 laravel 5 中工作,我有一个模块,用户可以在其中更新学生的信息,因为用户有一个包含当前数据的预加载表单,他可以修改他想要的字段。然后,在我做的控制器:

$perfil->update(Input::all())

效果很好。所以我的问题是:有办法获取已更新字段的名称吗?

【问题讨论】:

  • 在数据库中创建字段修改日期,并始终更新此日期。这样您就可以检查哪些字段已更新
  • 不,我已经有一个字段 updated_at 但每次寄存器发生更改时都会更新。这并不能告诉我修改了哪些字段。另一方面,我的意思是为每个不优雅甚至不正确的字段创建一个 modified 字段。谢谢
  • 我的一个项目我必须监控更改,所以我对更改做了表格并且有唯一的 id uid() - 然后我做了字段表格(change_id,field,new_value) - 我希望你得到我的想法

标签: php forms laravel laravel-5


【解决方案1】:

即使在持久化之后,您也可以在 Eloquent 模型上使用 getChanges()

$offer->update($data);
$offer->getChanges(); // [ "price_min" => "1233",  "updated_at" => "2019-01-10 15:36:23"]

【讨论】:

    【解决方案2】:

    您想使用dirty() 方法。此处已对此进行了很好的解释。

    Laravel Eloquent update just if changes have been made

    【讨论】:

    • 我认为 getDirty() 将在执行更新后为空,它最适合尚未执行查询时。 getChanges() 获取更新后更改的属性。
    猜你喜欢
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2019-07-25
    相关资源
    最近更新 更多