我正在使用Catalyst框架中的DBIx :: Class。我的本地目標是在用戶之間添加新的多對多關係,比方說,任務。但是我需要一個小技巧。用戶可以在任務中擁有不同的角色(如「工作人員」或「旁觀者」)。DBIx:帶有附加屬性的類多對多關係
所以我用戶表這些字段:
- ID
- 名
我任務表這些字段:
- ID
- 標題
- 描述
和我有關係表user_tasks這些領域:
- user_id說明
- TASK_ID
- 作用
我有的has_many建立從用戶到user_tasks,從的has_many任務到user_tasks和相應用戶和任務之間MANY_TO_MANY關係。這個平凡的部分就像它應該的那樣工作。
然後,例如,我想我的用戶列表,包括在任務由$ TASK_ID識別用戶的角色:
my $users = $schema->resultset('User')->with_task_role($task_id);
while (my $u = $users->next) {
print "User: " . $u->name . ", role: " . $u->get_column('task_role');
}
所以我應該怎麼編寫這個with_task_role定製的ResultSet得到這額外的字段用戶在我的查詢中的任務角色?
我已經知道DBIx :: Class有一個很好的文檔,因爲我先看了那裏。我已經嘗試了上面的這段代碼,但是它不能從這個查詢中獲得** user_tasks.role **字段! – 2011-05-24 15:58:48
嗯。我請求原諒。這段代碼確實有效,那是我的實現,它沒有(我使用了連接或預取,而不是在一起)。 – 2011-05-24 16:12:28
很高興聽到它的工作,它應該沒有預取工作也(只有加入),但然後你每次使用user_tasks或任何任何列時,你會打數據庫。 – 2011-05-24 16:20:43