本篇文章带大家聊聊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()的区别的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号