On récupère la liste des clés étrangères au niveau de \ORM\Table::get

This commit is contained in:
xdrm-brackets 2016-07-22 23:55:18 +02:00
parent abc9e3e1a5
commit e2f647af44
3 changed files with 52 additions and 6 deletions

View File

@ -10,7 +10,8 @@
/* Attributs */
public $where; // Tableau associatif contenant les conditions
public $select; // Tableau contenant la liste des champs à afficher
private $schema; // Tableau contenant les informations associées aux données
public $unique; // VRAI si on attend une valeur unique
public $schema; // Tableau contenant les informations associées aux données
/* CONSTRUCTEUR
@ -27,6 +28,9 @@
/* (3) On initialise les champs à retourner */
$this->select = [];
/* (4) On initialise le caractère 'unique' du résultat */
$this->unique = false;
}
@ -215,6 +219,28 @@
/* PERMET DE DIRE QUE L'ON VEUT UN RESULTAT UNIQUE
*
* @return this<Rows> Retourne l'object courant
*
*/
public function unique(){
/* [1] On enregistre le choix
=========================================================*/
$this->unique = true;
/* [2] On retourne l'object courant
=========================================================*/
return $this;
}
/* MODIFIE DES ENTREES
*
* @updates<Array> Tableau associatif contenant les nouvelles valeurs
@ -249,7 +275,11 @@
* @return data<mixed> Valeur du champ sélectionné (si 1 seul champ)
*
*/
public function fetch($unique=false){
public function fetch($unique=null){
/* [0] Initialisation des paramètres
=========================================================*/
$unique = !is_bool($unique) ? $this->unique : $unique;
/* [1] On rédige la requête
=========================================================*/

View File

@ -51,7 +51,7 @@
/* [2] Si la table existe, on récupère ses données
/* [2] Si la table existe, on récupère les colonnes
=========================================================*/
/* (1) On récupère les colonnes */
$getColumns = Database::getPDO()->query("SHOW columns FROM ".self::$database.'.'.$table_name);
@ -82,6 +82,22 @@
/* [3] On récupère les clés étrangères
=========================================================*/
/* (1) On récupère le texte du 'CREATE TABLE' */
$getCreateTable = Database::getPDO()->query("show create table ".$table_name);
$create_table = $getCreateTable->fetch()['Create Table'];
/* (2) On découpte en lignes */
$create_table_lines = explode("\n", $create_table);
/* (3) Pour chaque ligne, si c'est une contrainte, on l'enregistre dans la colonne associée */
foreach($create_table_lines as $i=>$line)
if( preg_match('/CONSTRAINT `.+` FOREIGN KEY \(`(.+)`\) REFERENCES `(.+)` \(`(.+)`\)+/i', $line, $m) )
$schema['columns'][$m[1]]['references'] = [$m[2], $m[3]];
/* [3] On renvoie une instance de 'Rows'
=========================================================*/
return new Rows($schema);

View File

@ -342,14 +342,14 @@
debug();
$userTable =
$myUser =
Table::get('user')
->getByIdWarehouse(7)
->select(['mail', 'username', 'firstname'])
->select('id_user')
->fetch(true);
->unique();
var_dump($userTable);
var_dump($myUser->schema['columns']);
?>