10 mars 2008
echo Propel::getConnection()->getLastExecutedQuery();
Certes la barre de débogage de symfony peut vous renseigner. Mais avec 7200 requêtes dans votre page vous êtes bien content de pouvoir générer une trace spécifique ;-) (à afficher ou écrire dans un log).
via prendre un Snippet.
Dans Info et autres geekeries | 2 commentaires | Tags : php5 > propel > symfony
23 février 2008
Si vous faites beaucoup de Propel(*), et si vous rencontrez des difficultés à écrire vos requêtes, cet utilitaire en ligne est pour vous :
http://propel.jondh.me.uk/

* Propel est un système d’ORM pour PHP5
Dans Info et autres geekeries | Aucun commentaire | Tags : php5 > propel
9 décembre 2007
En fait c’est plutôt une astuce Propel ;-).
Quand vous chargez des données depuis la base (avec doSelect ou retrieveByPk) vous récupérez des objets complètement « hydratés ». C’est à dire que chaque objet représente une ligne de votre base de donnée avec autant de variables membres que de colonnes. Un problème évident peut survenir si votre table contient des champs lourds à charger comme des binaires (BLOB) si vous voulez stocker des images, ou des chaines très longues (CLOB) pour du XML par exemple. C’est autant de données qu’il faudra extraire et charger dans vos objets ; autant vous dire que ce n’est pas forcément anodin en terme de performance (et je parle d’expérience).
Une solution simple existe pour contourner ce soucis. Dans le fichier décrivant vos données (schema.yml) ajouter simplement lazyLoad: true dans la description de la colonne que vous ne désirez pas charger.
matable:
id:
type: INTEGER
required: true
autoIncrement: true
primaryKey: true
smallcol:
type: VARCHAR
size: 255
bigcol:
type: CLOB
lazyLoad: true
Avec cette configuration, si je fais : MatablePeer::retrieveByPk(1), j’aurais un objet contenant uniquement les champs id et smallcol. Par contre, quand, sur mon objet, je ferais un ->getBigCol(), Propel lancera une requête (en fait un doSelectRS sur le champs en question) et récupèrera notre donnée.
Astucieux non ?
Dans Info et autres geekeries | 3 commentaires | Tags : php > php5 > propel > symfony