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
=========================================================*/
// 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 @@
//
// }
?>

View File

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

View File

@ -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
=========================================================*/

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(){
}
}
?>