|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 22 ![]() |
Bonjour a tous
j'ai repris un projet de dev web sur lequel est installé pear et qui utilise pear pour la couche d'abstraction à la base de données. il n'est pas simple de trouver bcp de doc sur pear et des guides d'utilisation. voici comment le projet a utilisé pear pour les accés à la bdd mysql - les tables sous crées sous phpmyadmin - un script 'createtables' génère les classes objets de chaque table de la bdd en etendant la classe db-dataobjects - puis une classe appelé 'metier' étend la classe objet precedemment créee afin de rajouter dans cette classe des fonctions liées à la table (ex : insertion, maj, recherche etc etc) pour utiliser dans un prog. php la table de la bdd, une instance de la table est crée : ex $obj_utilisateur = new utilisateur(); (utilisateur = une table de la bdd). puis ajout de whereadd order by et fetch pour lire la table jusque là tout me va (j'esperes avoir été clair). La ou ca se corse........ les ex eveloppeurs n'ont jamais utilisé de jointure avec pear dataobjects ce qui n'est pas top. j'ai utilisé la clause joinadd de pear mais cela necessite la maj d'un fichier .ini pour déclarer les cléfs étrangères et de plus dés qu'il y a 5 ou 6 tables avec des unions et des subselect, cela devient l'usine.............. voici la solution que j'ai trouvé pour me faciliter la tache. je déclare directement une instance de la dataobjects et non une instance d'une ou plusieurs tables de la dataobject. ensuite je fait un 'query pear' sur cette instance $obj = new dataobjects(); $obj->query("select * from etc etc inner join etc etc......); alors là tout va mieux .......... est-ce ok ? mais au bout du compte, si on requête de cette manière, a quoi sert alors d'utiliser pear ? merci pour votre éclairage |
|
|
00
|
|
|
#2 |
|
Nouveau Membre du Club
![]() Inscription : mars 2004 Messages : 56 ![]() |
Bonjour,
Pour utiliser les fonctions de liaison auto de db_DataObject, il faut les activer puis générer le fichier .links.ini : - L'option "generate_links" doit être sur true : ce paramètre devrait se trouver au même endroit que les variables de connexion à la base de donnée, surement un fichier .ini., section [DB_DataObject] - Utiliser le "createTables" qui va créer un fichier nomDeLaBase.links.ini, à l'endroit dédié aux classes de la table. Et en passant : Sauf exception justifiée, inutile de dériver les classes générées par createTables, car createTables garde tout le code écrit après l'instruction "#END_AUTOCODE". a+ Damran Edit: Il me semble qu'il faut aussi que la base (ici MySQL) soit dans un format gérant les contraintes relationnelles (les liaisons). Donc, MyISAM est à délaisser pour par exemple, InnoDB... à tester si ça ne marche pas. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com