From b01d759ffc35bdbdc668e632df86fd65965b8f21 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Sat, 23 Jul 2016 12:40:01 +0200 Subject: [PATCH] =?UTF-8?q?ORM:=20Gestion=20du=20formattage=20(typage)=20d?= =?UTF-8?q?es=20entr=C3=A9es=20d'une=20table=20jointe=20(jointure)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manager/ORM/Rows.php | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/manager/ORM/Rows.php b/manager/ORM/Rows.php index 0186f13..5344be8 100644 --- a/manager/ORM/Rows.php +++ b/manager/ORM/Rows.php @@ -659,19 +659,25 @@ $formatted = [$formatted]; /* (2) On retire les indices numériques */ + // {1} On récupère les colonnes locales // + $existingColumns = $this->schema['columns']; - // Pour chaque entrée + // {2} On ajoute les colonnes des jointures // + foreach($this->joined as $rows) + $existingColumns = array_merge( $existingColumns, $rows->schema['columns'] ); + + // {3} On vérifie chaque clé, si c'est une colonne qui existe // foreach($formatted as $i=>$entry) // Pour chaque champ foreach($entry as $index=>$value) - // Si dans le schéma on applique le type - if( isset($this->schema['columns'][$index]) ){ + // Si la colonne existe on applique le type + if( isset($existingColumns[$index]) ){ - if( $this->schema['columns'][$index]['type'] == 'int' ) + if( $existingColumns[$index]['type'] == 'int' ) $formatted[$i][$index] = intval( $value ); - else if( $this->schema['columns'][$index]['type'] == 'float' ) + else if( $existingColumns[$index]['type'] == 'float' ) $formatted[$i][$index] = floatval( $value ); }else // Si pas dans le schéma, on le retire