From cc6cff8a96074e597a36f91a9833205d6fc47524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr> Date: Wed, 28 Aug 2019 09:21:27 +0200 Subject: [PATCH] Meilleure gestion des NULL --- admin/src/BddAdmin/Table.php | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/admin/src/BddAdmin/Table.php b/admin/src/BddAdmin/Table.php index a786561d2b..e804a900a1 100644 --- a/admin/src/BddAdmin/Table.php +++ b/admin/src/BddAdmin/Table.php @@ -270,7 +270,7 @@ class Table $oldc = isset($old[$c]) ? $old[$c] : null; if ($newc instanceof \DateTime) $newc = $newc->format('Y-m-d'); if ($oldc instanceof \DateTime) $oldc = $oldc->format('Y-m-d'); - if (!in_array($c, $options['update-ignore-cols']) && $c != 'ID' && array_key_exists($c,$new) && $newc !== $oldc) { + if (!in_array($c, $options['update-ignore-cols']) && $c != 'ID' && array_key_exists($c, $new) && $newc !== $oldc) { $toUpdate[$c] = $new[$c]; } } @@ -338,12 +338,21 @@ class Table $whereSql .= ' AND '; } - $transVal = ':' . $c; + if (isset($options['columns'][$c]['transformer'])) { + $transVal = ':' . $c; $transVal = '(' . sprintf($options['columns'][$c]['transformer'], $transVal) . ')'; + $whereSql .= $c . ' = ' . $transVal; + $params[$c] = $v; + }else{ + if ($v === null){ + $whereSql .= $c . ' IS NULL'; + }else{ + $transVal = ':' . $c; + $whereSql .= $c . ' = ' . $transVal; + $params[$c] = $v; + } } - $whereSql .= $c . ' = ' . $transVal; - $params[$c] = $v; } return ' WHERE ' . $whereSql; @@ -406,6 +415,7 @@ class Table case 'CLOB': return $value; case 'DATE': + if (!$value) return null; $date = \DateTime::createFromFormat('Y-m-d', $value); $date->setTime(0, 0, 0); -- GitLab