Cet article présente principalement la méthode ThinkPHP de conversion des données des résultats des requêtes de base de données vers le type correspondant, impliquant les opérations de classe de modèle thinkPHP et les méthodes de modification associées pour les fichiers de code source. Les amis dans le besoin peuvent se référer aux exemples de cet article
Décrit la méthode de ThinkPHP pour convertir les données des résultats des requêtes de base de données vers le type correspondant. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants : J'ai récemment utilisé ThinkPHP3.2.3 pour le développement d'API et j'ai découvert que tous les types de valeurs de champ renvoyés par ThinkPHP3.x lors de l'interrogation de la base de données sont des chaînes. Je n'y ai pas prêté beaucoup d'attention lorsque je développais le Web dans le passé, mais maintenant j'ai du mal à développer à l'aide d'API. Le type de données est incorrect et le client ne peut pas forcer la conversion de chaque champ par lui-même. Après avoir vérifié les informations, j'ai découvert que Model.class.php de ThinkPHP3.x fournit la méthode _parseType pour effectuer la conversion de type après l'interrogation, mais nous devons l'ajuster manuellement. Vous devez écrire vous-même une classe de base Model : MBaseModel.class.php hérité de Modeluse Think\Model; class BaseModel extends Model { protected function _after_select(&$resultSet, $options) { parent::_after_select($resultSet,$options); foreach ($resultSet as &$result) { $this->_after_find($result, $options); } } protected function _after_find(&$result, $options) { parent::_after_find($result,$options); foreach ($result as $field => $value) { $this->_parseType($result, $field); } } }
_parseType de Model.class.php :
/** * 数据类型检测 * @access protected * @param mixed $data 数据 * @param string $key 字段名 * @return void */ protected function _parseType(&$data,$key) { if(!isset($this->options['bind'][':'.$key]) && isset($this->fields['_type'][$key])){ $fieldType = strtolower($this->fields['_type'][$key]); if(false !== strpos($fieldType,'enum')){ // 支持ENUM类型优先检测 }elseif(false === strpos($fieldType,'bigint') && false !== strpos($fieldType,'int')) { $data[$key] = intval($data[$key]); }elseif(false !== strpos($fieldType,'float') || false !== strpos($fieldType,'double')){ $data[$key] = floatval($data[$key]); }elseif(false !== strpos($fieldType,'bool')){ $data[$key] = (bool)$data[$key]; } } } // 上面第13行修改为 }elseif(false !== strpos($fieldType,'bigint') || false !== strpos($fieldType,'int') || false !== strpos($fieldType,'tinyint')) {
opérations d'ajout, de suppression, de modification et de requête de base de données thinkPHP
méthode thinkPHP5 pour ajouter du contenu à la base de données
Pensez à l'ajout, à la suppression, à la modification de la base de données de la version php3.2.3 et vérifiez le code d'implémentation
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!