0

アプリケーションをClass::DBIからDBIx::Classに移植していますが、サポートが必要です。T主キーtidを持つテーブルと、の行をそれ自体の複数の(子)行にChildT関連付ける別のテーブルがあります。のインスタンスのすべての子を見つけることができるように、との間の関係を設定するにはどうすればよいですか。これら2つのテーブルの簡略版を次に示します。TTTChildTT

T: (id, name);
ChildT: (rowid, tid, childid)

tid両方ともの列をchildid参照します。idT

ありがとう!

4

1 に答える 1

0

他の誰かが同じ問題を抱えているか、それを改善/修正するのに役立つことを期待して、私は自分の質問に答えていることに賛成票を投じないでください-

DBIx ::Class::Relationshipのドキュメントでは、これについて十分に明確に説明されています。ChildT クラスで、外部キーを使用するbelongs_to関係を定義します。Tchildid

__PACKAGE__->belongs_to(parent => 'App::Schema::Result::T', 'childid');

T クラスで、ChildT クラスとの has_many および many_to_many 関係を定義します。

__PACKAGE__->has_many(childrecords => 'App::Schema::Result::ChildT', 'tid');
__PACKAGE__->many_to_many(children => 'childrecords', 'parent');

これにより$t->children、任意のインスタンスのすべての子レコードが得られますT

于 2010-10-31T12:30:46.970 に答える