2011-03-04 4 views
2

Je construis une application avec un ORM basé sur DBIx :: Class (Loader). La plupart de mes modèles de base de données ont une colonne 'nom'. Un de mes contrôleurs recherche toutes les classes de schéma en utilisant principalement la colonne 'nom'. Quelques classes de schéma n'ont cependant pas de colonne 'nom'.Colonne virtuelle DBIx :: Class?

Est-il possible DBIx :: Classe d'ajouter une sorte de colonne « virtuelle » qui utilise une autre colonne à la place:

$resultset('Account')->search({name => 'foobar'}) 

récrit secrètement à

$resultset('Account')->search({accountnumber => 'foobar'}) 

J'espère que je fais sens , n'importe qui?

Thx, Rob

Répondre

1

Pour autant que je sais que ce n'est pas possible - non pas comme une clé dans une requête de recherche de toute façon. Qu'est-ce que vous pouvez faire est de créer une classe de base pour toutes vos classes resultset (vous utilisez load_namespaces, à droite?) Qui a une méthode find_by_name ou similaire, qui effectue cette recherche sur la colonne correcte. La colonne peut par défaut nommer mais être remplacée par un attribut de classe - que vous pouvez configurer avec mk_accessor.

Vous pouvez définir cette classe de base pour être la classe par défaut pour tous vos resultset resultsets avec l'attribut default_resultset_class de load_namespaces

+0

Excellent, suggestions comme celles-ci je peux travailler avec. Merci –

Questions connexes