diff options
Diffstat (limited to 'src/model')
-rw-r--r-- | src/model/CESU.php | 5 | ||||
-rw-r--r-- | src/model/Clients.php | 13 | ||||
-rw-r--r-- | src/model/DevisFactures.php | 5 | ||||
-rw-r--r-- | src/model/Locations.php | 5 | ||||
-rw-r--r-- | src/model/Model.php | 14 | ||||
-rw-r--r-- | src/model/Prestations.php | 5 | ||||
-rw-r--r-- | src/model/StructTablesDB.php | 4 | ||||
-rw-r--r-- | src/model/traits.php | 16 |
8 files changed, 36 insertions, 31 deletions
diff --git a/src/model/CESU.php b/src/model/CESU.php index 4679da2..28a54a8 100644 --- a/src/model/CESU.php +++ b/src/model/CESU.php | |||
@@ -12,10 +12,7 @@ class CESU extends Model | |||
12 | private $duree_travail; | 12 | private $duree_travail; |
13 | private $salaire; | 13 | private $salaire; |
14 | 14 | ||
15 | public function __construct() | 15 | use ModelChildren; |
16 | { | ||
17 | $this->table = self::TABLE; // => Model::$table | ||
18 | } | ||
19 | 16 | ||
20 | // setters | 17 | // setters |
21 | public function setID(int $value) | 18 | public function setID(int $value) |
diff --git a/src/model/Clients.php b/src/model/Clients.php index 1256458..816cff3 100644 --- a/src/model/Clients.php +++ b/src/model/Clients.php | |||
@@ -10,10 +10,7 @@ class Clients extends Model | |||
10 | public $code_client; | 10 | public $code_client; |
11 | public $commentaires; | 11 | public $commentaires; |
12 | 12 | ||
13 | public function __construct() | 13 | use ModelChildren; // renseigne parent::table |
14 | { | ||
15 | $this->table = strtolower(__CLASS__); // simple parce que la classe a le nom de la table | ||
16 | } | ||
17 | 14 | ||
18 | //~ public function set(string $variable, $value) | 15 | //~ public function set(string $variable, $value) |
19 | //~ { | 16 | //~ { |
@@ -47,4 +44,12 @@ class Clients extends Model | |||
47 | $this->commentaires = $value; | 44 | $this->commentaires = $value; |
48 | return($this); | 45 | return($this); |
49 | } | 46 | } |
47 | |||
48 | |||
49 | public function newRow(array $entry) | ||
50 | { | ||
51 | $this->hydrate(['prenom_nom' => $entry[0], 'adresse' => $entry[1], 'code_client' => $entry[2], 'commentaires' => $entry[3]]); | ||
52 | $this->create(); | ||
53 | $this->setIdFromLastInsertID(); | ||
54 | } | ||
50 | } | 55 | } |
diff --git a/src/model/DevisFactures.php b/src/model/DevisFactures.php index be733dd..218ebfe 100644 --- a/src/model/DevisFactures.php +++ b/src/model/DevisFactures.php | |||
@@ -19,10 +19,7 @@ class DevisFactures extends Model | |||
19 | private $deplacement; | 19 | private $deplacement; |
20 | private $total_HT; | 20 | private $total_HT; |
21 | 21 | ||
22 | public function __construct() | 22 | use ModelChildren; |
23 | { | ||
24 | $this->table = strtolower(__CLASS__); | ||
25 | } | ||
26 | 23 | ||
27 | // setters | 24 | // setters |
28 | public function setID(int $value) | 25 | public function setID(int $value) |
diff --git a/src/model/Locations.php b/src/model/Locations.php index 2aa175a..b788d43 100644 --- a/src/model/Locations.php +++ b/src/model/Locations.php | |||
@@ -15,10 +15,7 @@ class Locations extends Model | |||
15 | private $loyer_mensuel; | 15 | private $loyer_mensuel; |
16 | private $total_HT; | 16 | private $total_HT; |
17 | 17 | ||
18 | public function __construct() | 18 | use ModelChildren; |
19 | { | ||
20 | $this->table = strtolower(__CLASS__); | ||
21 | } | ||
22 | 19 | ||
23 | // setters | 20 | // setters |
24 | public function setID(int $value) | 21 | public function setID(int $value) |
diff --git a/src/model/Model.php b/src/model/Model.php index ad9e6c7..9effbe7 100644 --- a/src/model/Model.php +++ b/src/model/Model.php | |||
@@ -3,7 +3,7 @@ | |||
3 | 3 | ||
4 | class Model extends DB | 4 | class Model extends DB |
5 | { | 5 | { |
6 | private $db; // instance de PDO | 6 | protected $db; // instance de PDO |
7 | protected $table; // <= enfant | 7 | protected $table; // <= enfant |
8 | //static protected $tableStructure; | 8 | //static protected $tableStructure; |
9 | 9 | ||
@@ -12,7 +12,6 @@ class Model extends DB | |||
12 | $this->db = parent::getInstance(); // connexion | 12 | $this->db = parent::getInstance(); // connexion |
13 | } | 13 | } |
14 | 14 | ||
15 | |||
16 | // setters (plusieurs en même temps) | 15 | // setters (plusieurs en même temps) |
17 | public function hydrate(array $data) // $data = tableau associatif en entrée: nom_du_champ => valeur | 16 | public function hydrate(array $data) // $data = tableau associatif en entrée: nom_du_champ => valeur |
18 | { | 17 | { |
@@ -51,7 +50,7 @@ class Model extends DB | |||
51 | } | 50 | } |
52 | 51 | ||
53 | 52 | ||
54 | // méthodes CRUD qui marchent (les spécifiques sont dans les classes enfant) | 53 | // méthodes CRUD |
55 | 54 | ||
56 | // create INSERT | 55 | // create INSERT |
57 | public function create() // = write | 56 | public function create() // = write |
@@ -79,17 +78,17 @@ class Model extends DB | |||
79 | 78 | ||
80 | 79 | ||
81 | // read SELECT | 80 | // read SELECT |
82 | public function readAll() | 81 | public function readAll() // obtenir une table |
83 | { | 82 | { |
84 | $query = $this->execQuery('SELECT * FROM ' . $this->table . ';'); // fonctionne aussi sans le point virgule dans le SQL!! | 83 | $query = $this->execQuery('SELECT * FROM ' . $this->table . ';'); // fonctionne aussi sans le point virgule dans le SQL!! |
85 | return($query->fetchAll()); | 84 | return($query->fetchAll()); |
86 | } | 85 | } |
87 | public function findById(int $id) | 86 | public function findById(int $id) // obtenir une entrée avec son ID |
88 | { | 87 | { |
89 | return($this->execQuery('SELECT * FROM ' . $this->table . ' WHERE id = ' . $id)->fetch()); | 88 | return($this->execQuery('SELECT * FROM ' . $this->table . ' WHERE id = ' . $id)->fetch()); |
90 | } | 89 | } |
91 | 90 | ||
92 | public function find(array $criteria) | 91 | public function find(array $criteria) // obtenir une entrée avec un tableau associatif 'champ' => 'valeur' |
93 | { | 92 | { |
94 | $fields = []; | 93 | $fields = []; |
95 | $values = []; | 94 | $values = []; |
@@ -140,7 +139,6 @@ class Model extends DB | |||
140 | // DBStructure::${self::$tableStructure} permet de nommer une variable statique de classe | 139 | // DBStructure::${self::$tableStructure} permet de nommer une variable statique de classe |
141 | static public function createTables() | 140 | static public function createTables() |
142 | { | 141 | { |
143 | //~ var_dump(StructTablesDB::$structureOfTables); | ||
144 | foreach(StructTablesDB::$structureOfTables as $tableName => $oneTable) | 142 | foreach(StructTablesDB::$structureOfTables as $tableName => $oneTable) |
145 | { | 143 | { |
146 | //var_dump(StructTablesDB::${self::$tableStructure}); => propriété statique de classe dans une variable | 144 | //var_dump(StructTablesDB::${self::$tableStructure}); => propriété statique de classe dans une variable |
@@ -156,7 +154,5 @@ class Model extends DB | |||
156 | 154 | ||
157 | parent::getInstance()->exec($query); // merci singleton! | 155 | parent::getInstance()->exec($query); // merci singleton! |
158 | } | 156 | } |
159 | |||
160 | |||
161 | } | 157 | } |
162 | } | 158 | } |
diff --git a/src/model/Prestations.php b/src/model/Prestations.php index 4f58d70..32f9768 100644 --- a/src/model/Prestations.php +++ b/src/model/Prestations.php | |||
@@ -13,10 +13,7 @@ class Prestations extends Model | |||
13 | private $mode_paiement; | 13 | private $mode_paiement; |
14 | private $commentaires; | 14 | private $commentaires; |
15 | 15 | ||
16 | public function __construct() | 16 | use ModelChildren; |
17 | { | ||
18 | $this->table = strtolower(__CLASS__); | ||
19 | } | ||
20 | 17 | ||
21 | // setters | 18 | // setters |
22 | public function setID(int $value) | 19 | public function setID(int $value) |
diff --git a/src/model/StructTablesDB.php b/src/model/StructTablesDB.php index cf6de5d..ee4baf1 100644 --- a/src/model/StructTablesDB.php +++ b/src/model/StructTablesDB.php | |||
@@ -10,10 +10,10 @@ class StructTablesDB | |||
10 | // la table prestations est liée à la table clients | 10 | // la table prestations est liée à la table clients |
11 | // les tables devis_factures, cesu et locations sont liées à la table prestations | 11 | // les tables devis_factures, cesu et locations sont liées à la table prestations |
12 | 'clients' => ['ID' => 'INTEGER', 'prenom_nom' => 'TEXT', 'adresse' => 'TEXT', 'code_client' => 'TEXT', 'commentaires' => 'TEXT'], | 12 | 'clients' => ['ID' => 'INTEGER', 'prenom_nom' => 'TEXT', 'adresse' => 'TEXT', 'code_client' => 'TEXT', 'commentaires' => 'TEXT'], |
13 | 'prestations' => ['ID' => 'INTEGER', 'ID_client' => 'INTEGER', 'combientieme_fois' => 'INTEGER', 'code_presta' => 'TEXT', 'date' => 'INTEGER', 'type' => 'TEXT', 'mode_paiement' => 'TEXT', 'commentaires' => 'TEXT'], | 13 | 'prestations' => ['ID' => 'INTEGER', 'ID_client' => 'INTEGER', 'combientieme_fois' => 'INTEGER', 'code_presta' => 'TEXT', 'date' => 'INTEGER', 'type_presta' => 'TEXT', 'mode_paiement' => 'TEXT', 'commentaires' => 'TEXT'], |
14 | 'devisfactures' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'validite_devis' => 'TEXT', 'signature_devis' => 'TEXT', 'taches' => 'TEXT', 'machine' => 'TEXT', 'OS' => 'TEXT', 'donnees' => 'TEXT', 'cles_licences' => 'TEXT', 'total_main_d_oeuvre' => 'REAL', 'pieces' => 'TEXT', 'total_pieces' => 'REAL', 'deplacement' => 'REAL', 'total_HT' => 'REAL'], | 14 | 'devisfactures' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'validite_devis' => 'TEXT', 'signature_devis' => 'TEXT', 'taches' => 'TEXT', 'machine' => 'TEXT', 'OS' => 'TEXT', 'donnees' => 'TEXT', 'cles_licences' => 'TEXT', 'total_main_d_oeuvre' => 'REAL', 'pieces' => 'TEXT', 'total_pieces' => 'REAL', 'deplacement' => 'REAL', 'total_HT' => 'REAL'], |
15 | 'cesu' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'duree_travail' => 'TEXT', 'salaire' => 'REAL'], | 15 | 'cesu' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'taches' => 'TEXT', 'duree_travail' => 'TEXT', 'salaire' => 'REAL'], |
16 | 'locations' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'nature_bien' => 'TEXT', 'modele' => 'TEXT', 'valeur' => 'REAL', 'etat_des_lieux_debut' => 'TEXT', 'etat_des_lieux_fin' => 'TEXT', 'duree_location' => 'TEXT', 'loyer_mensuel' => 'REAL', 'total_HT' => 'REAL'] | 16 | 'locations' => ['ID' => 'INTEGER', 'ID_presta' => 'INTEGER', 'designation' => 'TEXT', 'modele_description' => 'TEXT', 'valeur' => 'REAL', 'etat_des_lieux_debut' => 'TEXT', 'etat_des_lieux_fin' => 'TEXT', 'duree_location' => 'INTEGER', 'loyer_mensuel' => 'REAL', 'loyers_encaisse' => 'INTEGER', 'caution' => 'INTEGER'] |
17 | ]; | 17 | ]; |
18 | 18 | ||
19 | // les types de variables de sqlite sont peu nombreux et autorisent un typage automatique | 19 | // les types de variables de sqlite sont peu nombreux et autorisent un typage automatique |
diff --git a/src/model/traits.php b/src/model/traits.php new file mode 100644 index 0000000..43d9b7f --- /dev/null +++ b/src/model/traits.php | |||
@@ -0,0 +1,16 @@ | |||
1 | <?php | ||
2 | // model/traits.php | ||
3 | |||
4 | trait ModelChildren // pour ne pas toucher au constructeur de la classe Model | ||
5 | { | ||
6 | public function __construct() | ||
7 | { | ||
8 | $this->table = strtolower(__CLASS__); | ||
9 | } | ||
10 | |||
11 | public function setIdFromLastInsertID() // à faire juste après l'écriture d'une nouvelle entrée | ||
12 | { | ||
13 | $this->db = parent::getInstance(); | ||
14 | $this->ID = $this->db->lastInsertId(); // méthode de PDO | ||
15 | } | ||
16 | } | ||