Gestion dans 'parentRepo' des getters dynamiques avec clé primaire composée

This commit is contained in:
xdrm-brackets 2016-05-09 14:33:18 +02:00
parent d514c290df
commit 75d9ec964d
4 changed files with 69 additions and 8 deletions

View File

@ -61,8 +61,9 @@
/* [2] Gestion du getter dynamique des Repos /* [2] Gestion du getter dynamique des Repos
=========================================================*/ =========================================================*/
// var_dump( \manager\repo\user::getById(1) ); // var_dump( \manager\repo\user::getById(1) );
// // var_dump( \manager\repo\user::getByLogin('xdrm') ); // var_dump( \manager\repo\user::getByLogin('xdrm') );
// // var_dump( \manager\repo\subject::getById(1) ); // var_dump( \manager\repo\subject::getById(69) );
// var_dump( \manager\repo\relation::getById(638, 640, 30) );
@ -84,5 +85,4 @@
// //
// } // }
?> ?>

View File

@ -18,6 +18,20 @@
"link" "link"
], ],
"relation": [
"getAll",
"getById",
"create",
"remove"
],
"category": [
"getAll",
"getByIntitule",
"create",
"remove"
],
"Personnes": [ "Personnes": [
"getById" "getById"
], ],

View File

@ -45,6 +45,7 @@
array_push($table_columns, $column['Field']); array_push($table_columns, $column['Field']);
} }
/* [3] On vérifie que la valeur après 'get' est dans $table_columns /* [3] On vérifie que la valeur après 'get' est dans $table_columns
=========================================================*/ =========================================================*/
$columnName = strtolower($matches[1]); $columnName = strtolower($matches[1]);
@ -56,15 +57,25 @@
// Si ni 'getAll' ni 'getSomething' -> erreur // Si ni 'getAll' ni 'getSomething' -> erreur
if( !$getById && !$getAll && !$getSomething ) return false; if( !$getById && !$getAll && !$getSomething ) return false;
/* [4] On rédige la requête /* [4] On rédige la requête
=========================================================*/ =========================================================*/
$getRequestString = 'SELECT * FROM '.static::table_name(); $getRequestString = 'SELECT * FROM '.static::table_name();
// Si c'est 'getById', on ajoute une condition (clé primaire) // Si c'est 'getById', on ajoute une condition (clé primaire)
if( $getById ){ 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 // Si c'est 'getSomething', on ajoute une condition
}else if( $getSomething ) }else if( $getSomething )
@ -75,12 +86,24 @@
// On prépare la requête // On prépare la requête
$getRequest = Database::getPDO()->prepare($getRequestString); $getRequest = Database::getPDO()->prepare($getRequestString);
/* [5] On exécute la requête /* [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 // Si 'getSomething', on ajoute le champ
$getRequest->execute(array( }else
':value' => ($getSomething||$getById) ? $args[0] : null $getRequest->execute(array(
)); ':value' => ($getSomething||$getById) ? $args[0] : null
));
/* [6] On récupère le résultat /* [6] On récupère le résultat
=========================================================*/ =========================================================*/

24
manager/repo/relation.php Normal file
View File

@ -0,0 +1,24 @@
<?php
namespace manager\repo;
use \manager\Database;
use \manager\sessionManager;
class relation extends parentRepo{
protected static function table_name(){ static $table_name = 'relations'; return $table_name; }
public static function create(){
}
public static function remove(){
}
}
?>