Maison > cadre php > Laravel > Une brève analyse de la différence entre isDirty() et wasChanged() dans Laravel

Une brève analyse de la différence entre isDirty() et wasChanged() dans Laravel

青灯夜游
Libérer: 2023-01-04 21:23:20
avant
1580 Les gens l'ont consulté

Cet article parlera de la différence entre isDirty() et wasChanged() dans le modèle de données Laravel. J'espère qu'il sera utile à tout le monde !

Une brève analyse de la différence entre isDirty() et wasChanged() dans Laravel

Y a-t-il une différence entre `isDirty()` et `wasChanged()` dans le modèle de données Laravel ?

Réponse : Il y a une différence.

Code associé : github.com/laravel/framework/blob/...

Le code de la fonction isDirty est le suivant :

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

getChanges() et le code de la fonction getDirty() est le suivant

/**
 * 获取自从最后一次同步以来,被修改的属性值
 *
 * @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;}
Copier après la connexion

En bref .

Réponse citée depuis : laracasts.com/discuss/channels/elo...

isDirty (et getDirty) est utilisé lors de la pré-exécution de la sauvegarde pour voir quelles propriétés ont été modifiées entre la récupération de la base de données et l'appel. , et wasChanged (et getChanges) est exécuté après l'enregistrement pour vérifier si les propriétés ont été modifiées ou mises à jour lors de la dernière sauvegarde (du code à la base de données

Adresse originale : https://stackoverflow.com/questions/58312036 /). incohérence-entre-éloquent-isdirty-and-getchanges

Adresse de traduction : https://learnku.com/laravel/t/61576

[Recommandations associées : tutoriel vidéo laravel]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal