Как настроить отношение нескольких основных столбцов 1: n с DBIx :: Class в Perl?

Я сам пишу классы схемы DBIx :: Class с DBIx :: Class :: Candy. В настоящее время я натыкаюсь на какую-то часть сложного дизайна базы данных.

Я настроил большинство классов, используя DBIx :: Class :: Relationship как шаблон для моделирования отношений 1:n, n:1 и n:m (с одним единственным первичным ключом). Все в порядке, но у меня не складываются эти конкретные отношения.

Game_Users - это n:m таблица отношений между двумя нерелевантными таблицами Games и Users. Turns, с другой стороны, представляет собой "обычную" таблицу, в которой хранятся отдельные ходы для комбинации игры и пользователя.

  • Game_Users имя пакета MyApp::Schema::Result::GameUser
  • Turns название пакета MyApp::Schema::Result::Turn

Как настроить это отношение нескольких основных столбцов 1: n с DBIx :: Class в Perl?

Я хотел бы отметить, что даже если я покажу здесь конкретный пример, общий вопрос может заинтересовать большое количество аудитории.

Дизайн базы данных: отношение Game_Users к поворотам


person burnersk    schedule 17.08.2013    source источник


Ответы (1)


Вы можете просто предоставить хэш-ссылку с выражением соединения для has_many и belongs_to. В MyApp::Schema::Result::GameUser:

__PACKAGE__->has_many(turns => 'MyApp::Schema::Result::Turn', {
    'foreign.game_id' => 'self.game_id',
    'foreign.user_id' => 'self.user_id',
});

In MyApp::Schema::Result::Turn:

__PACKAGE__->belongs_to(game_user => 'MyApp::Schema::Result::GameUser', {
    'foreign.game_id' => 'self.game_id',
    'foreign.user_id' => 'self.user_id',
});
person nwellnhof    schedule 17.08.2013