【问题标题】:MySQl/Laravel: check the changed column before updating the recordMySQl/Laravel:在更新记录之前检查更改的列
【发布时间】:2019-10-02 07:40:07
【问题描述】:

我有一个表abc,它有几个字段。

我需要获取已更新的一个或多个列(除了:idcreated_atupdated_at)并将现有值与列名一起存储在与选定的对应的logs 表中在该表中更新之前记录。

例如:
表格:abc

id: 1
name: 'Old name'
mobile: 9876543210
address: 'Abc-123'
...
created_at: 'Sometime'
updated_at: 'Sometime'

update:
    name: 'new name'
    mobile: 1234567890

表:日志应该有

column | value
name   | Old name

column | value
mobile | 9876543210

但是,我可以将整个记录保存在表中,这会容易得多,但这只会浪费空间/内存。此外,如果没有任何算法,将很难确定哪个值在那个时间点发生了确切的变化。

【问题讨论】:

    标签: mysql laravel logging enter


    【解决方案1】:

    isDirty() 方法用于检查模型或任何给定属性是否已被修改。

    如果名称被更改,它将返回 true :$model->isDirty('name')

    您也可以使用getOriginal() 方法获取旧值

    Ex  : $old_name = $model->getOriginal('name');
    

    参考:https://laravel.com/api/master/Illuminate/Database/Eloquent/Model.html#method_isDirty

    【讨论】:

    • 谢谢,我试试这个
    猜你喜欢
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2011-12-09
    • 2013-10-23
    相关资源
    最近更新 更多