ldo...@users.adullact.net
unread,Feb 27, 2026, 6:11:27 AM (6 days ago) Feb 27Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to openmairie...@googlegroups.com
Author: ldorner
Date: 2026-02-27 12:11:24 +0100 (Fri, 27 Feb 2026)
New Revision: 5493
Modified:
openmairie_exemple/branches/4.11.0-compatibilite-php8.1_WIP3/core/om_application_pdo.trait.php
Log:
fix: meilleure gestion du cas ou colonne booleenne avec valeur a null
Modified: openmairie_exemple/branches/4.11.0-compatibilite-php8.1_WIP3/core/om_application_pdo.trait.php
===================================================================
--- openmairie_exemple/branches/4.11.0-compatibilite-php8.1_WIP3/core/om_application_pdo.trait.php 2026-02-26 09:37:41 UTC (rev 5492)
+++ openmairie_exemple/branches/4.11.0-compatibilite-php8.1_WIP3/core/om_application_pdo.trait.php 2026-02-27 11:11:24 UTC (rev 5493)
@@ -1487,29 +1487,36 @@
if (!$get_columns_name && ($value === true || $value === false)) {
$boolean_columns[$key] = true;
} else if (!$get_columns_name && ($value === 1 || $value === "1" || $value === "t" || $value === 0 || $value === "0" || $value === "f" || $value === null)) {
- // Construire la map des métadonnées une seule fois
- // à partir des tables de la requête (get_columns_metadata
- // + get_additional_columns), évite getColumnMeta()
- if (!isset($query_metadata_map)) {
- $query_metadata_map = $this->build_query_columns_metadata_map($query);
+ if ($value !== null) {
+ // Construire la map des métadonnées une seule fois
+ // à partir des tables de la requête (get_columns_metadata
+ // + get_additional_columns), évite getColumnMeta()
+ if (!isset($query_metadata_map)) {
+ $query_metadata_map = $this->build_query_columns_metadata_map($query);
+ }
+ $column_found = false;
+ $lower_key_check = strtolower($key);
+ if (isset($query_metadata_map[$lower_key_check])) {
+ $column_found = true;
+ if ($query_metadata_map[$lower_key_check]['type'] === 'bool') {
+ $boolean_columns[$lower_key_check] = true;
+ $boolean_columns[$i] = true;
+ }
+ }
}
- $lower_key_check = strtolower($key);
- if (isset($query_metadata_map[$lower_key_check])) {
- if ($query_metadata_map[$lower_key_check]['type'] === 'bool') {
- $boolean_columns[$lower_key_check] = true;
- $boolean_columns[$i] = true;
- }
- } else {
- // Fallback : getColumnMeta() pour les colonnes
- // non trouvées dans les métadonnées des classes
+ if ($value === null || !$column_found) {
+ // NULL ne renseigne pas sur le type : on interroge
+ // directement le driver pour éviter que
+ // build_query_columns_metadata_map() ne crée des
+ // instances dbform en cascade via get_inst__om_dbform()
$meta = $stmt->getColumnMeta($i);
- $column_name = strtolower($meta['name']);
$native_type = isset($meta['native_type']) ? $meta['native_type'] : '';
if ($native_type === 'bool') {
+ $column_name = strtolower($meta['name']);
$boolean_columns[$column_name] = true;
$boolean_columns[$i] = true;
}
- }
+ }
}
$i++;