首頁 >php框架 >Laravel >淺析Laravel中isDirty()和wasChanged()的區別

淺析Laravel中isDirty()和wasChanged()的區別

青灯夜游
青灯夜游轉載
2023-01-04 21:23:201609瀏覽

這篇文章帶大家聊聊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()的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除