2013-08-17 70 views
2

我正在用DBIx::Class::Candy自己寫DBIx::Class模式類。目前,我圍繞複雜數據庫設計的一部分進行了介紹。如何在Perl中設置多主列1:n與DBIx :: Class的關係?

我已經安裝使用大部分爲DBIx::Class::Relationship模板造型1:nn:1n:m關係(與一個單一的主鍵)的類。一切都好,但我沒有得到這個特定的關係運行。

Game_Users是兩個無關表GamesUsers之間的n:m關係表。另一方面,Turns是存儲遊戲和用戶組合的單圈的「普通」表格。

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

如何設置這個多主列的1:n在Perl與DBIx ::類關係?

我想指出的是,即使我在這裏展示一個具體的例子,一般問題可能會受到衆多觀衆的興趣。

Database desing: Game_Users to Turns relation

回答

3

你可以簡單地提供與加入表達hashref到has_manybelongs_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', 
});