浅析Laravel中isDirty()和wasChanged()的区别

广告:宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取~~~

浅析Laravel中isDirty()和wasChanged()的区别

本篇文章带大家聊聊Laravel数据模型中isDirty()和wasChanged()的区别,希望对大家有所帮助!

Laravel 数据模型中 `isDirty()` 和 `wasChanged()` 有区别吗?

答案:是有区别的。

相关代码: github.com/laravel/framework/blob/...

isDirty 函数的代码如下:

/** * 判断模型或者任意指定模型属性是否被修改过 * * @param  array|string|null  $attributes * @return bool */public function isDirty($attributes = null){    return $this->hasChanges(        $this->getDirty(), is_array($attributes) ? $attributes : func_get_args()    );}
登录后复制

getChanges() 和 getDirty() 函数的代码如下

/** * 获取自从最后一次同步以来,被修改的属性值 * * @return array */public function getDirty(){    $dirty = [];    foreach ($this->getAttributes() as $key => $value) {        if (! $this->originalIsEquivalent($key, $value)) {            $dirty[$key] = $value;        }    }    return $dirty;}/** * 获取所有已经被修改的属性. * * @return array */public function getChanges(){    return $this->changes;}
登录后复制

简而言之.

答案引用于: laracasts.com/discuss/channels/elo...

isDirty (and getDirty) 用在保存前置执行, 查看哪些属性在从数据库检索到调用之间被修改过, 而 wasChanged (and getChanges)是保存后置执行,查看属性是否在上次保存中(从代码到数据库)被修改或者更新.

原文地址:https://stackoverflow.com/questions/58312036/incoherence-between-eloquent-isdirty-and-getchanges

译文地址:https://learnku.com/laravel/t/61576

【相关推荐:laravel视频教程】

以上就是浅析Laravel中isDirty()和wasChanged()的区别的详细内容,更多请关注9543建站博客其它相关文章!

9543建站博客
一个专注于网站开发、微信开发的技术类纯净博客。
作者头像
admin创始人

肥猫,知名SEO博客站长,14年SEO经验。

上一篇:一起看看php7带来的性能升级
下一篇:如何使用PHP进行基本的大数据分析

发表评论

关闭广告
关闭广告