On récupère la liste des clés étrangères au niveau de \ORM\Table::get
This commit is contained in:
parent
6a0d92ef28
commit
1cd1df9a26
|
@ -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
|
||||
=========================================================*/
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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']);
|
||||
|
||||
?>
|
||||
|
|
Loading…
Reference in New Issue