模型更新

问题一、如何知道模型的某个值已经发生变化。

比如我们在做新闻添加时,有一个字段为 body 存储内容,而内容在保存时需要格式化之后在存储,添加时当然是直接格式化了,而更新时我需要判断这个 body 是否已经发生变化,如果没有发生变化的话直接存储就可以了,也就是说更新时发生变化才去格式化他的内容。

问题二、如何获取模型原有的值。

这个问题也是在模型更新的时候,比如我做一个上传文件的功能,在更新时,前一个已经上传了a.jpg文件,这一次上传的是 b.jpg,在保存 b.jpg的同时我要删除掉原来的a.jpg文件。那么在更新的时候我需要知道原来的文件名,即 a.jpg,这样的话我才可以去正确的删除掉原来的上传文件。

我尝试过在 beforeValidate 事件中去获取,但是只能获取到 $this->id 值,而我想要的是其他字段的值,群里的兄弟说可以再查询一下获取值,嗯,这是一种方法,但我想是不是还有更好的办法呢?




function beforeSave() 

{

     if($something)

     {

          return true;

     }

}



有几种办法:

  1. 在afterFind里对所有的值做一个备份

  2. 在准备编辑前对所有的值做备份

  3. 在保存时通过PK值从数据库读取旧的值

我个人倾向于用最后两种方法