3

さまざまなデータベーステーブルをモデル化するDBIx::Class::Coreオブジェクトがいくつかあります。

これらのモデルの一部(「キュー」列を持つモデル)では、別のクラスにサブを挿入します(基本的に、モデルオブジェクトをキューの状態に沿って「移動」します)。

そのクラスにもhas_many関係を注入してもらいたいです

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

しかし、リレーションシップを正しく登録できないようです(ただし、「No such Relationship」エラーが発生し続けます。ただし、ソースでリレーションシップメソッドを呼び出すと、リレーションシップが返されます)。

何が悪いのかについての手がかりはありますか?

4

1 に答える 1

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重要なのは、新しい関係を持つことによって追加される他のすべての適切なメソッドを生成するための登録解除/登録メソッドです。

于 2010-04-23T23:47:45.273 に答える