Bonjour,
Je suis novice en Php et en POO et je dois créer une requête qui retourne des informations sur une parcelle dont la géométrie est stockée dans une table PostGreSQL, selon qu'elle fasse partie de telle ou telle zone d'un PLU (infos et géométrie stockées dans une autre table), recoupe telle prescription ou non (infos et géométrie stockées dans d'autres tables selon le type de géométrie), ...
J'arrive au résultat escompté, mais je pense qu'il y a possibilité de faire mieux niveau code.
Quelles optimisations pourraient être faites ?
J'ai essayé l'hydratation de mes objets mais sans succès
et ma classe RestContrainte()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58 function getContrainte(){ $database = new Database(); $db = $database->getConnection(); $id = '************'; $contraintes = array(); $plu = $db->query("SELECT DISTINCT plu.typezone,plu.libelle,plu.libelong FROM plu.zones_plu AS plu JOIN plu.parcelle AS parcelle ON ST_Intersects(ST_BUFFER(plu.geom,-1), parcelle.geom) GROUP BY plu.typezone,plu.libelle,plu.libelong,parcelle.label HAVING parcelle.label = '" . $id . "' "); while($donnees = $plu->fetch(PDO::FETCH_ASSOC)){ $contrainte = new RestContrainte($donnees); $contrainte->groupe = 'zonage'; $contrainte->ssgroupe = $donnees['typezone']; $contrainte->libelle = $donnees['libelle']; $contrainte->texte = $donnees['libelong']; array_push($contraintes,$contrainte); } $pscsurf = $db->query("SELECT DISTINCT pscsurf.libelle,pscsurf.typepsc,pscsurf.txt FROM plu.psc_surf AS pscsurf JOIN plu.parcelle AS parcelle ON ST_Intersects(pscsurf.geom, parcelle.geom) GROUP BY pscsurf.libelle,pscsurf.typepsc,pscsurf.txt,parcelle.label HAVING parcelle.label = '" . $id . "' "); $psclin = $db->query("SELECT DISTINCT psclin.libelle,psclin.typepsc,psclin.txt FROM plu.psc_lin AS psclin JOIN plu.parcelle AS parcelle ON ST_Intersects(psclin.geom, parcelle.geom) GROUP BY psclin.libelle,psclin.typepsc,psclin.txt,parcelle.label HAVING parcelle.label = '" . $id . "' "); $pscpct = $db->query("SELECT DISTINCT pscpct.libelle,pscpct.typepsc,pscpct.txt FROM plu.psc_pct AS pscpct JOIN plu.parcelle AS parcelle ON ST_Intersects(pscpct.geom, parcelle.geom) GROUP BY pscpct.libelle,pscpct.typepsc,pscpct.txt,parcelle.label HAVING parcelle.label = '" . $id . "' "); while($donnees = $pscsurf->fetch(PDO::FETCH_ASSOC)){ $contrainte = new RestContrainte($donnees); $contrainte->groupe = 'prescription'; $contrainte->ssgroupe = $donnees['typepsc']; $contrainte->libelle = $donnees['libelle']; $contrainte->texte = $donnees['txt']; array_push($contraintes,$contrainte); } while($donnees = $psclin->fetch(PDO::FETCH_ASSOC)){ $contrainte = new RestContrainte($donnees); $contrainte->groupe = 'prescription'; $contrainte->ssgroupe = $donnees['typepsc']; $contrainte->libelle = $donnees['libelle']; $contrainte->texte = $donnees['txt']; array_push($contraintes,$contrainte); } while($donnees = $pscpct->fetch(PDO::FETCH_ASSOC)){ $contrainte = new RestContrainte($donnees); $contrainte->groupe = 'prescription'; $contrainte->ssgroupe = $donnees['typepsc']; $contrainte->libelle = $donnees['libelle']; $contrainte->texte = $donnees['txt']; array_push($contraintes,$contrainte); } return $contraintes; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class RestContrainte { public $groupe; public $ssgroupe; public $libelle; public $texte; public function __construct() { $this->groupe = null; $this->ssgroupe = null; $this->libelle = null; $this->texte = null; } }
Partager