我正在将应用程序从Class::DBI移植到DBIx::Class并且需要帮助。我有一个T
带有主键 tid 的表和另一个ChildT
将一行关联T
到自身的多个(子)行的表T
。如何设置和之间的关系T
,ChildT
以便我可以找到T
. 以下是这两个表的精简版本:
T: (id, name);
ChildT: (rowid, tid, childid)
tid
并且两者childid
都引用.id
T
谢谢!
我正在将应用程序从Class::DBI移植到DBIx::Class并且需要帮助。我有一个T
带有主键 tid 的表和另一个ChildT
将一行关联T
到自身的多个(子)行的表T
。如何设置和之间的关系T
,ChildT
以便我可以找到T
. 以下是这两个表的精简版本:
T: (id, name);
ChildT: (rowid, tid, childid)
tid
并且两者childid
都引用.id
T
谢谢!
请不要投票我正在回答我自己的问题,希望其他人有同样的问题或可以帮助改进/纠正它 -
DBIx ::Class::Relationship文档清楚地解释了这一点。在 ChildT 类中定义使用外键的belongs_to
关系:T
childid
__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