Je voudrais ajouter que, au lieu d'ajouter une méthode « recherche » dans My::Table
,
on peut aussi améliorer la -> méthode de recherche fourni par DBIx::Class::ResultSet
, comme ceci:
package Schema::ResultSet::My::Table;
use base 'DBIx::Class::ResultSet';
sub search {
my ($self, $args) = (shift, shift);
# do what you want here with the args passed to ->search
return $self->next::method($args, @_);
}
également , vous pouvez très probablement sous-classer ResultSet afin que vous puissiez fournir cette recherche altérée (mise en cache) à tous les ResultSets, gardant ainsi le code de cache dans un endroit pour toutes les tables, ce qui serait beaucoup moins compliqué.
Cela je n'ai pas encore testé, cependant.Pour que l'exemple ci-dessus fonctionne, placez-le dans un fichier portant le nom de votre classe de schéma, dans le répertoire "../Schema/ResultSet/"
, et assurez-vous que votre fichier Schema.pm contient "load_namespaces();"
qui va automatiquement charger toutes vos classes surchargées mettre là (je pense que mon installation de Catalyst a fait cela automatiquement, mais je ne me souviens pas).
DBIx::Class::ResultSet
Vous obtenez beaucoup de résultats pour http://www.google.com/search?q=DBIx%3A%3AClass+caching –