Установка отношения «многие ко многим» таблицы с самим собой с помощью DBIx :: Class - PullRequest
0 голосов
/ 31 октября 2010

Я портирую приложение с Class :: DBI на DBIx :: Class и мне нужна помощь. У меня есть таблица T с указанием первичного ключа и другая таблица ChildT, которая связывает строку T с несколькими (дочерними) строками самого T. Как мне установить отношения между T и ChildT, чтобы я мог найти всех потомков экземпляра T. Вот урезанные версии этих двух таблиц:

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

tid и childid оба ссылаются на столбец id в T.

Спасибо!

1 Ответ

0 голосов
/ 31 октября 2010

Пожалуйста, не голосуйте Я отвечаю на свой вопрос в надежде, что у кого-то есть такая же проблема или она может помочь исправить / исправить ее -

DBIx ::Класс :: Relationship документы объясняют это достаточно четко.В классе ChildT определите отношение belongs_to к T, используя внешний ключ childid:

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

В классе T определите отношение has_many и many_to_many с классом ChildT:

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

При этом $t->children дает все дочерние записи любого экземпляра T

...