ThinkPHP 5 est un framework PHP open source qui peut améliorer considérablement l'efficacité du développement d'applications Web. Parmi elles, les opérations impliquant l'interrogation, l'insertion, la mise à jour, la suppression et d'autres opérations de données sont l'une des parties les plus fréquemment utilisées. Cet article explique comment mettre à jour les données qui n'ont pas besoin d'être mises à jour à 0 lors de l'utilisation du framework ThinkPHP 5.
Il est très pratique de manipuler des données dans ThinkPHP 5 à l'aide du mappage relationnel d'objets ORM. Normalement, nous utilisons la méthode save() de l'objet modèle pour mettre à jour les données. Lors de l'utilisation de la méthode save(), si un champ du formulaire n'a pas été modifié, la valeur du champ ne sera pas mise à jour.
Par exemple, nous avons un tableau d'informations sur l'utilisateur qui couvre des détails tels que l'identifiant de l'utilisateur, le nom d'utilisateur, le mot de passe, le sexe et l'âge. L'utilisateur a uniquement modifié les champs de mot de passe et d'âge ; aucune modification n'a été apportée aux champs de nom d'utilisateur et de sexe. La méthode save() ne modifie pas la valeur des champs nom d'utilisateur et sexe lors de l'exécution d'une opération de mise à jour. Mais si nous voulons mettre à jour les données inchangées à 0, comment faire ?
Nous pouvons réaliser cette fonction en remplaçant la méthode save() de l'objet modèle. L'implémentation spécifique est la suivante :
1. Dans la classe model, définissez un tableau statique $zero_fields pour stocker le tableau de champs qui doit être mis à jour à 0.
protected static $zero_fields = ['field1', 'field2', ...];
2. Dans la méthode save(), déterminez si le champ qui doit être mis à jour à 0 a déjà une valeur. Sinon, mettez à jour sa valeur à 0, et enfin appelez la méthode save() de la classe parent. enregistrer les autres champs, renouveler.
public function save(array $data = [], $where = [], $sequence = null) { foreach (self::$zero_fields as $field) { if (!isset($data[$field])) { $data[$field] = 0; } } return parent::save($data, $where, $sequence); }
En réécrivant la méthode save(), nous pouvons traiter les champs qui doivent être mis à jour de manière ciblée et mettre à jour les champs inchangés à 0, évitant ainsi l'impact des données incomplètes soumises par le formulaire sur la base de données.
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!