我正在使用 Catalyst 框架中的 DBIx::Class。我的本地目标是在用户和任务之间添加新的多对多关系。但我需要一个小技巧。用户在任务中可以有不同的角色(如“工人”或“旁观者”)。
所以我有这些字段的用户表:
- ID
- 姓名
我有这些字段的任务表:
- ID
- 标题
- 描述
我有这些字段的关系表user_tasks :
- 用户身份
- task_id
- 角色
我已经设置了从用户到用户任务的has_many,从任务到用户任务的has_many以及用户和任务之间对应的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自定义结果集进行编码,以在我的查询中使用用户的任务角色来获取这个附加字段?