首页 > 解决方案 > 使用背包 4.1 操作请求数据

问题描述

我想在保存之前更改数据我有一个不需要秒数的日期,我希望秒数一直为 00。我在请求类中尝试了 Laravel 的prepareForValidation()方法,但结果证明它不会影响存储在数据库中的值。我也尝试过背包modifyField(),但我找不到在存储或更新之前修改价值的方法。

执行此操作的最佳方法是什么?使用 Laravel7 和 Backpack 4.1

标签: phplaravellaravel-backpack

解决方案


我不知道是否有一种特定的背包方式可以做到这一点,但是您可以在模型上使用 mutator 来修改值,然后再将其保存到数据库中。

在您的情况下,如果您的字段名是“date_time”,您可以执行以下操作:

class MyModel extends Model {

  setDateTimeAttribute ($value) {

    $value = Carbon::parse($value)->second(0);

    $this->attributes['date_time'] = $value;  
  }
}

这样做的好处是,每次更新 date_time 属性时都会发生突变 - 无论您是通过 Backpack Crud 还是通过其他方法更新它。

参考资料


推荐阅读