DBIx:带有附加属性的类多对多关系

2024-03-16

我正在 Catalyst 框架中使用 DBIx::Class 。我的本地目标是在用户和任务之间添加新的多对多关系。但我需要一个小技巧。用户可以在任务中扮演不同的角色(例如“工人”或“旁观者”)。

所以我有users包含这些字段的表:

  • id
  • name

I have task包含这些字段的表:

  • id
  • title
  • 描述

我有关系表用户任务与这些字段:

  • user_id
  • task_id
  • role

我已经设置了 has_manyusers to 用户任务, has_many 来自tasks to 用户任务以及对应的多对多关系users and tasks。这个简单的部分按其应有的方式工作。

然后,例如,我想获取我的用户列表,包括用户在 $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自定义结果集以在我的查询中获取带有用户任务角色的附加字段?


首先多对多不是关系。它是一个访问器(关系桥梁)。

其次,DBIx::Class 拥有出色的文档。看一下连接/预取。 在你的 ResultSet/User.pm 文件中你应该有类似的内容:

sub with_task_role {
    my ($self, $task_id) = @_;

    return $self->search({
            'task.task_id' => $task_id,
        },
        {
            join     => { 'user_task' => 'task' },
            prefetch => { 'user_task' => 'task' },
        },
    );
}

PS:抱歉,我没看到 Ashley 已经回答了 PS2:最后一行“})”之前应该只有“)”(已修复)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DBIx:带有附加属性的类多对多关系 的相关文章

随机推荐

  • Coq:添加“强归纳”策略

    对自然数的 强 或 完全 归纳意味着当证明 n 上的归纳步骤时 您可以假设该属性对于任何 k 都成立 Theorem strong induction forall P nat gt Prop forall n nat forall k n
  • 常规网络服务

    我尝试过使用http groovy codehaus org GroovyWS http groovy codehaus org GroovyWS 在我的 BuildConfig groovy 中 我添加了 compile org code
  • 使用YQL多查询&XPath解析HTML,如何转义嵌套引号?

    标题比它必须的更复杂 这是问题查询 SELECT FROM query multi WHERE queries SELECT FROM html WHERE url http www stumbleupon com url http www
  • PHP 动态调整图像大小与存储调整大小的图像

    我正在构建一个图像共享网站 想了解使用 PHP 动态调整图像大小并存储调整后的图像的优缺点 哪个更快 哪个更可靠 两种方法在速度和性能上差距有多大 请注意 无论哪种方式 图像都会通过 PHP 脚本进行统计 例如视图 或者是否允许热链接等 因
  • 在 Java 中创建一个填充随机整数的文本文件

    也许是个愚蠢的问题 但我尝试用 512 个整数填充一个空文本文件 每个整数在每个新行上 我能够将它们随机化并写入文件中 但它们创建了一大堆我想要的数字 谁能帮我纠正我的代码吗 import java io BufferedWriter im
  • iOS 版 QtCreator:如何使用我的应用程序部署 dylib 共享库

    我在 iOS 上部署动态共享库时遇到了困难 为了隔离和暴露问题 我有一个非常简单的 HelloWorld 项目 一个库导出类 其中包含返回 Hello World 的函数 以及一个使用该类并显示消息的程序 我正在使用 QtCreator 和
  • Pods.framework 为红色,在 DerivedData 中不存在

    我正在尝试使用 Cocoapods 0 39 0 作为我的项目的依赖项 我已按照步骤操作 但最终在我的项目中得到了红色的 Pods framework 如果我查看 XCode 7 2 1 所说的路径 它不存在 Users ajmas Lib
  • 使用 fillna 在 Pandas 中用列表填充空值

    Given a pd Series 我想用列表替换空值 也就是说 给定 import numpy as np import pandas as pd ser pd Series 0 1 np nan 我想要一个会返回的函数 0 0 1 1
  • Aurelia 自定义元素:访问父方法

    我正在使用 Aurelia 的自定义元素重复一组条目 这是示例要点 https gist run id 38aee85444712 2f021bc05e1e0de25ae https gist run id 38aee854447122f0
  • Webpack 在输出中禁用图像名称的散列

    构建我的 Angular 4 应用程序后 Webpack 将我的图像名称更改为bg node new png to bg node new 3746bc3ac9b1bf77d2aff2c2df901a48 png 我的 webpack co
  • TFS 2013:如何将变更集注释放入文本文件中?

    我想将所有变更集注释放入一个简单的文本文件中 以自动生成变更日志 我尝试通过在 SQL 中查询 TFS 表来做到这一点 但它是一个未记录的黑匣子 我读了一篇文章来运行这样的东西 tf history r 我获得了最新的 TFS 2013 电
  • 当Python请求库遇到重试限制时如何访问服务器响应

    我正在使用 Python requests 库来实现重试逻辑 这是我为重现我遇到的问题而制作的一个简单脚本 在重试次数用完的情况下 我希望能够记录来自服务器的至少一个响应以帮助调试 但是 我不清楚如何访问该信息 当然 我可以以其他方式实现重
  • 从图像列表加载和查看图像

    正如您所看到的 下面给出的代码不是很有用 是否可以缩短代码 鼠标滚轮向后和向前给出相同的结果 下图 无法配置 Keydown Private Sub Images Load ByVal sender As System Object ByV
  • nodeJS util.format 传递数组

    我正在使用 util format 来格式化字符串 如下所示 util format My name is s s John Smith 事实上 第二个参数是一个数组 John Smith 阻止我的代码替换第二个 s 但我需要它是一个数组
  • 为什么使用 MySQL 时带有“exists”的 sql 运行速度比“in”慢

    我是 MySQL 优化的新手 我发现了一个惊人的事情 使用 exists 的 sql 比使用 in 运行得慢 以下是我的 DDL mysql gt show create table order G 1 row Table order Cr
  • Spring批处理:在侦听器中获取ExecutionContext

    我是 Spring 批次的新手 我需要计算读取 写入和出错的元素 我定义了这样的步骤 Bean public Step stepMain StepBuilderFactory stepBuilderFactory return stepBu
  • Python - Gspread 请求错误 401

    我目前正在制作一个连接到 Google 电子表格 gspread 的 Discord 机器人 但在我运行它一段时间后 它开始发出错误 并且无法再连接到我的 gspread 除非我重新启动它 我收到的错误 https hastebin com
  • 页面方法和会话

    我已经四处寻找这个解决方案 任何见解都将受到高度赞赏 情况 当单个页面中有多个 PageMethod 调用时 每个方法调用都会持有 Session 对象的锁 从而导致阻塞 PageMethod 调用只能异步进行 Page指令转向False
  • 如何在 MVC 视图中使用 jquery/ajax 验证空格

    我有一个包含表单的 MVC 视图 现在需要验证在特定文本字段中输入的数据 我只需要确保没有空格 在我看来 有人可以给我一个使用 jquery ajax 脚本进行表单验证的示例吗 将验证构建到视图模型的一部分可能是个好主意 这样您的模型中就会
  • DBIx:带有附加属性的类多对多关系

    我正在 Catalyst 框架中使用 DBIx Class 我的本地目标是在用户和任务之间添加新的多对多关系 但我需要一个小技巧 用户可以在任务中扮演不同的角色 例如 工人 或 旁观者 所以我有users包含这些字段的表 id name I