2010-04-23 5 views
3

J'ai une poignée d'objets DBIx :: Class :: Core qui modélisent diverses tables de base de données.Injecter des relations dans DBIx :: Class

Pour certains de ces modèles (ceux qui ont une colonne « file d'attente »), j'ai une autre classe injectent sous-marins (essentiellement, à « déplacer » l'objet modèle le long de sa file d'attente des états).

Je voudrais aussi que la classe injectent has_many relations ala

class($name)->has_many('queue_history','MySchema::Result::QueueHistory', 
{ 'foreign.record_id'=>'self.id' }, 
{ where => { type => $name }}); 

mais je ne peux pas sembler obtenir les relations pour enregistrer correctement (continuer à obtenir des erreurs « No Such relation » - cependant, quand appeler la méthode de relation sur les sources fournit la relation).

Des indices sur ce qui ne va pas?

+0

trouvé une solution, aimerait toujours voir des solutions de rechange! – Carl

Répondre

2

Après quelques recherches autour, les travaux suivants:

$class = $schema->class($name)->has_many('queue_history','MySchema::Result::QueueHistory', 
{ 'foreign.record_id'=>'self.id' }, 
{ where => { type => $name }}); 

$schema->unregister_source($name); 
$schema->register_class($name,$class); 

La clé étant les méthodes désinscription/registre afin de générer toutes les autres méthodes appropriées qui sont ajoutés en ayant une nouvelle relation has_many.

Questions connexes