【问题标题】:How to get original accessor data when update Model Laravel?更新模型 Laravel 时如何获取原始访问器数据?
【发布时间】:2020-03-16 10:54:48
【问题描述】:

我想在更新实例时将数据前后写入日志表。

我通过getOriginal()方法获取 beforeUpdate(original) 数据,但不知道如何获取与原始数据相关的数据。

例如:

campaigns 有字段campaign_status_id

我有一个Accessor是getCampaignStatusNameAttribute(),这个方法会得到campaigns表和campaign_status表之间的关系并返回campaign_status_name

如果我更新活动状态并致电getCampaignStatusNameAttribute(),我只会收到更新的数据。当然,我可以编写一个自定义函数并将campaign_status_id 作为参数传递来获取数据,但我想知道更好的解决方案。

获取原始Accessor的任何解决方案?

【问题讨论】:

    标签: php laravel eloquent accessor


    【解决方案1】:

    为了得到原始数据,你使用

    $model->getAttributes()['column_name']
    

    或者这个

    Arr::get($model->getAttributes(), 'column_name', 'default_value_here') // default value can be null
    

    如果您使用Arr 方式,请确保在顶部导入此Arr 辅助外观。 Arr 方式的优点是,即使该值不存在,它也不会返回任何错误,并且如果该值不存在,您始终可以返回一些默认值。

    getOriginal 将返回最近调用的修改。这并不是最可靠的方法。

    【讨论】:

      猜你喜欢
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      相关资源
      最近更新 更多