Perl 使用DBIx::Class设置表与自身的多对多关系

Perl 使用DBIx::Class设置表与自身的多对多关系,perl,many-to-many,dbix-class,Perl,Many To Many,Dbix Class,我正在将应用程序从移植到,需要帮助。我有一个带有主键tid的表T和另一个表child,它将T的一行与T本身的多个子行关联起来。如何设置T和ChildT之间的关系,以便找到T实例的所有子级。以下是这两个表的精简版本: T: (id, name); ChildT: (rowid, tid, childid) tid和childid都引用T的id列 谢谢 请不要反对我回答自己的问题,希望其他人也有同样的问题,或者可以帮助改善/纠正它- 文件对此解释得很清楚。在ChildT类中,使用外键childid

我正在将应用程序从移植到,需要帮助。我有一个带有主键tid的表T和另一个表child,它将T的一行与T本身的多个子行关联起来。如何设置T和ChildT之间的关系,以便找到T实例的所有子级。以下是这两个表的精简版本:

T: (id, name);
ChildT: (rowid, tid, childid)
tid和childid都引用T的id列

谢谢

请不要反对我回答自己的问题,希望其他人也有同样的问题,或者可以帮助改善/纠正它-

文件对此解释得很清楚。在ChildT类中,使用外键childid定义与T的归属关系:

在T类中,定义a与ChildT类之间存在多对多关系:

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

通过这个$t->children提供了t的任何实例的所有子记录

您是否阅读了DBIx::Class::Manual,特别是Cookbook,其中有各种处理多对多关系的示例?里面的解释对你不起作用吗?你犯了什么错误?我犯了。Cookbook和Relationship文档解释了当链接表包含两个不同表的外键时如何执行此操作。所以我知道如何为演员->阿克特罗配角做这件事
__PACKAGE__->has_many(childrecords => 'App::Schema::Result::ChildT', 'tid');
__PACKAGE__->many_to_many(children => 'childrecords', 'parent');