2

我正在使用DBIx::Class::Candy自己编写DBIx::Class模式类。目前,我在复杂数据库设计的某些部分中遇到了麻烦。

我已经使用DBIx::Class::Relationship作为模板设置了大多数类,用于对1:n,n:1n:m关系进行建模(使用一个主键)。一切都好,但我没有得到这种特殊的关系。

Game_Users是两个不相关的表和n:m之间的关系表。另一方面是一个“普通”表,它存储游戏和用户组合的单回合。GamesUsersTurns

  • Game_Users包名是MyApp::Schema::Result::GameUser
  • Turns包名是MyApp::Schema::Result::Turn

如何在 Perl 中设置这种多主列 1:n 与 DBIx::Class 的关系?

我想指出,即使我在这里展示一个具体的例子,一般性的问题也可能会引起大量观众的兴趣。

数据库设计:Game_Users 到 Turns 关系

4

1 回答 1

3

您可以简单地提供带有连接表达式的 hashref 到has_manyand 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',
});

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',
});
于 2013-08-17T16:08:55.153 回答