Gestion dans 'parentRepo' des getters dynamiques avec clé primaire composée
This commit is contained in:
parent
d514c290df
commit
75d9ec964d
|
@ -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 @@
|
|||
//
|
||||
// }
|
||||
|
||||
|
||||
?>
|
||||
|
|
|
@ -18,6 +18,20 @@
|
|||
"link"
|
||||
],
|
||||
|
||||
"relation": [
|
||||
"getAll",
|
||||
"getById",
|
||||
"create",
|
||||
"remove"
|
||||
],
|
||||
|
||||
"category": [
|
||||
"getAll",
|
||||
"getByIntitule",
|
||||
"create",
|
||||
"remove"
|
||||
],
|
||||
|
||||
"Personnes": [
|
||||
"getById"
|
||||
],
|
||||
|
|
|
@ -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
|
||||
=========================================================*/
|
||||
|
|
|
@ -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(){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
Loading…
Reference in New Issue