Catalyst フレームワークで DBIx::Class を使用しています。私の局所的な目標は、ユーザーと、たとえばタスクとの間に新しい多対多の関係を追加することです。しかし、私が必要とする小さなトリックが 1 つあります。ユーザーは、タスク内でさまざまな役割を持つことができます (「作業者」や「見物人」など)。
だから私はこれらのフィールドを持つユーザーテーブルを持っています:
- ID
- 名前
これらのフィールドを持つタスクテーブルがあります:
- ID
- 題名
- 説明
そして、これらのフィールドを持つリレーションシップ テーブルuser_tasksがあります。
- ユーザーID
- task_id
- 役割
usersからuser_tasksへの has_many 、 tasks からuser_tasksへの has_many 、およびusersと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カスタム結果セットをどのようにコーディングして、クエリでユーザーのタスク ロールを含むこの追加フィールドを取得する必要がありますか?