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

798qvoo8  于 2022-11-15  发布在  Perl
关注(0)|答案(1)|浏览(166)

我正在将一个应用程序从Class::DBI移植到DBIx::Class,需要帮助。我有一个表T,它具有主键tid,还有一个表ChildT,它将T的一行关联到多个T本身的(子)行。如何设置TChildT之间的关系,以便找到T示例的所有子项?下面是这两个表的简化版本:

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

tidchildid都引用Tid列。
谢谢你!

mum43rcc

mum43rcc1#

我在回答我自己的问题。
DBIx::Class::Relationship文档对此进行了足够清楚的解释,在ChildT类中,使用外键childid定义belongs_toT的关系:

__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的任何示例的所有子记录。

相关问题