ホームページ  >  記事  >  PHPフレームワーク  >  Laravel の isDirty() と wasChanged() の違いの簡単な分析

Laravel の isDirty() と wasChanged() の違いの簡単な分析

青灯夜游
青灯夜游転載
2023-01-04 21:23:201574ブラウズ

この記事では、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 (および getDirty) は、データベースからの取得と呼び出しの間にどのプロパティが変更されたかを確認するための保存前の実行に使用されます。一方、 wasChanged (および getChanges) は最後の保存 (コードからデータベース) でプロパティが変更または更新されたかどうかを確認するための保存後の実行に使用されます。

元のアドレス: https://stackoverflow.com/ questions/58312036/incoherence-between-eloquent -isdirty-and-getchanges

翻訳アドレス: https://learnku.com/laravel/t/61576

[関連する推奨事項: laravel ビデオチュートリアル ]

以上がLaravel の isDirty() と wasChanged() の違いの簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。