From 75d9ec964d46acccab5d1d7eeb820fb24a037988 Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Mon, 9 May 2016 14:33:18 +0200 Subject: [PATCH] =?UTF-8?q?Gestion=20dans=20'parentRepo'=20des=20getters?= =?UTF-8?q?=20dynamiques=20avec=20cl=C3=A9=20primaire=20compos=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- automate.php | 6 +++--- config/repositories.json | 14 ++++++++++++++ manager/repo/parentRepo.php | 33 ++++++++++++++++++++++++++++----- manager/repo/relation.php | 24 ++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 8 deletions(-) create mode 100644 manager/repo/relation.php diff --git a/automate.php b/automate.php index 5160961..746f35c 100755 --- a/automate.php +++ b/automate.php @@ -61,8 +61,9 @@ /* [2] Gestion du getter dynamique des Repos =========================================================*/ // var_dump( \manager\repo\user::getById(1) ); - // // var_dump( \manager\repo\user::getByLogin('xdrm') ); - // // var_dump( \manager\repo\subject::getById(1) ); + // var_dump( \manager\repo\user::getByLogin('xdrm') ); + // var_dump( \manager\repo\subject::getById(69) ); + // var_dump( \manager\repo\relation::getById(638, 640, 30) ); @@ -84,5 +85,4 @@ // // } - ?> diff --git a/config/repositories.json b/config/repositories.json index e0e64df..46abb77 100755 --- a/config/repositories.json +++ b/config/repositories.json @@ -18,6 +18,20 @@ "link" ], + "relation": [ + "getAll", + "getById", + "create", + "remove" + ], + + "category": [ + "getAll", + "getByIntitule", + "create", + "remove" + ], + "Personnes": [ "getById" ], diff --git a/manager/repo/parentRepo.php b/manager/repo/parentRepo.php index 01fcf5a..b3e1558 100644 --- a/manager/repo/parentRepo.php +++ b/manager/repo/parentRepo.php @@ -45,6 +45,7 @@ array_push($table_columns, $column['Field']); } + /* [3] On vérifie que la valeur après 'get' est dans $table_columns =========================================================*/ $columnName = strtolower($matches[1]); @@ -56,15 +57,25 @@ // Si ni 'getAll' ni 'getSomething' -> erreur if( !$getById && !$getAll && !$getSomething ) return false; + /* [4] On rédige la requête =========================================================*/ $getRequestString = 'SELECT * FROM '.static::table_name(); // Si c'est 'getById', on ajoute une condition (clé primaire) if( $getById ){ - $getRequestString .= ' WHERE '.$table_columns['_PRIMARY_'][0].' = :value'; - // TODO: Gestion d'une clé primaire composée (plusieurs arguments) + // S'il manque un paramètre, on retourne une erreur + if( count($args) < count($table_columns['_PRIMARY_']) ) + return false; + + // Pour chaque clé primaire (si elle est composée) + foreach($table_columns['_PRIMARY_'] as $i=>$primary_column) + // Première ligne + if( $i == 0 ) $getRequestString .= ' WHERE '.$table_columns['_PRIMARY_'][$i].' = :primary'.$i; + // Lignes suivantes + else $getRequestString .= ' AND '.$table_columns['_PRIMARY_'][$i].' = :primary'.$i; + // Si c'est 'getSomething', on ajoute une condition }else if( $getSomething ) @@ -75,12 +86,24 @@ // On prépare la requête $getRequest = Database::getPDO()->prepare($getRequestString); + /* [5] On exécute la requête =========================================================*/ + // Si 'getById', on compose la clé primaire + if( $getById ){ + + $pdo_vars = array(); + + foreach($table_columns['_PRIMARY_'] as $i=>$primary_column) + $pdo_vars[':primary'.$i] = $args[$i]; + + $getRequest->execute( $pdo_vars ); + // Si 'getSomething', on ajoute le champ - $getRequest->execute(array( - ':value' => ($getSomething||$getById) ? $args[0] : null - )); + }else + $getRequest->execute(array( + ':value' => ($getSomething||$getById) ? $args[0] : null + )); /* [6] On récupère le résultat =========================================================*/ diff --git a/manager/repo/relation.php b/manager/repo/relation.php new file mode 100644 index 0000000..2453849 --- /dev/null +++ b/manager/repo/relation.php @@ -0,0 +1,24 @@ +