On récupère la liste des clés étrangères au niveau de \ORM\Table::get
This commit is contained in:
parent
abc9e3e1a5
commit
e2f647af44
|
@ -10,7 +10,8 @@
|
||||||
/* Attributs */
|
/* Attributs */
|
||||||
public $where; // Tableau associatif contenant les conditions
|
public $where; // Tableau associatif contenant les conditions
|
||||||
public $select; // Tableau contenant la liste des champs à afficher
|
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
|
/* CONSTRUCTEUR
|
||||||
|
@ -27,6 +28,9 @@
|
||||||
|
|
||||||
/* (3) On initialise les champs à retourner */
|
/* (3) On initialise les champs à retourner */
|
||||||
$this->select = [];
|
$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
|
/* MODIFIE DES ENTREES
|
||||||
*
|
*
|
||||||
* @updates<Array> Tableau associatif contenant les nouvelles valeurs
|
* @updates<Array> Tableau associatif contenant les nouvelles valeurs
|
||||||
|
@ -249,7 +275,11 @@
|
||||||
* @return data<mixed> Valeur du champ sélectionné (si 1 seul champ)
|
* @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
|
/* [1] On rédige la requête
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
|
|
|
@ -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 */
|
/* (1) On récupère les colonnes */
|
||||||
$getColumns = Database::getPDO()->query("SHOW columns FROM ".self::$database.'.'.$table_name);
|
$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'
|
/* [3] On renvoie une instance de 'Rows'
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
return new Rows($schema);
|
return new Rows($schema);
|
||||||
|
|
|
@ -342,14 +342,14 @@
|
||||||
|
|
||||||
debug();
|
debug();
|
||||||
|
|
||||||
$userTable =
|
$myUser =
|
||||||
Table::get('user')
|
Table::get('user')
|
||||||
->getByIdWarehouse(7)
|
->getByIdWarehouse(7)
|
||||||
->select(['mail', 'username', 'firstname'])
|
->select(['mail', 'username', 'firstname'])
|
||||||
->select('id_user')
|
->select('id_user')
|
||||||
->fetch(true);
|
->unique();
|
||||||
|
|
||||||
var_dump($userTable);
|
|
||||||
|
|
||||||
|
var_dump($myUser->schema['columns']);
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
Loading…
Reference in New Issue