在DBIx :: Class中注入关系

时间:2010-04-23 18:29:57

标签: perl dbix-class

我有一些DBIx :: Class :: Core对象可以为各种数据库表建模。

对于其中一些模型(具有'队列'列的那些模型),我有另一个类注入subs(基本上,沿着它的队列状态“移动”模型对象)。

我想让那个班级注入has_many关系ala

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

但我似乎无法正确注册关系(继续获得“无此关系”错误 - 但是,当在源上调用关系方法提供回关系时)。

关于什么是错的任何线索?

1 个答案:

答案 0 :(得分:2)

经过一番挖掘,以下工作:

$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);

关键是取消注册/注册方法,以便生成通过建立新的has_many关系而添加的所有其他适当方法。