6 juillet 2010
Une petite astuce que j’utilise depuis longtemps mais que je n’avais jamais pensé à partager : optimiser le nombre de requêtes Doctrine et par la même occasion, un module d’admin generator.
J’ai un module d’admin generator article lié au modèle Article.
- schema.yml
Article:
connection: doctrine
actAs:
Timestampable: ~
Taggable: ~
Sluggable:
fields: [titre]
name: slug
type: string
length: 255
unique: true
canUpdate: true
columns:
titre:
type: string(255)
notnull: true
# et d'autres champs
id_auteur:
type: integer
notnull: true
relations:
Auteur: { class: vjGuardUserProfile, onDelete: SET NULL, onUpdate: CASCADE, local: id_auteur, foreign: id }
- generator.yml
list: title: Liste des articles display: [titre, date_publication, Auteur] max_per_page: 5 table_method: retrieveBackend
- ArticleTable.class.php
public function retrieveBackend(Doctrine_Query $q)
{
$rootAlias = $q->getRootAlias($q);
$q->leftJoin($rootAlias.'.Auteur au');
return $q;
}
Dans cet exemple, je passe de 6 requêtes Doctrine pour l’affichage de 5 lignes à 3 requêtes.
Ce n’est pas énorme mais sur 20 lignes et 3 relations, on passe de 63 requêtes à
…
3 requêtes !
Sisi !
Alors, abusez-en !

Laisser une réponse