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:带有附加属性的类多对多关系 的相关文章

  • 在 Perl 中查找数组的大小

    我似乎遇到过几种不同的方法来查找数组的大小 这三种方法有什么区别呢 my arr 2 print scalar arr First way to print array size print arr Second way to print
  • 判断是否存在多对多记录组合

    这似乎是一个常见的任务 有一个简单的解决方案 但我在 StackOverflow 和 Google 上都空手而归 场景是这样的 我有两个共享多对多关系的表 A 和 B 因此 我有一个带有外键的表 A B 它映射 A 到 B 记录关系 标准的
  • 使用 sed 替换复杂模式

    我想使用 sed 命令替换模式 要删除的图案如下所示 带有一个空格 var 0xaae8 x6A x6F x69 x6E x72 x65 x76 x65 x72 x73 x65 x73 x70 x6C x69 x74 x3E x74 x70
  • 如何手动加载 N:N 关系中的相关实体?

    我正在使用 EF5 当关系为 1 N 时 如果我想加载相关实体 我会执行以下操作 使用 T SQL 我使用如下 T SQL 从数据库加载主要实体 select from MainEntities where 使用 T SQL 我加载相关实体
  • 我们应该聘请用 Perl 编写 C 的人吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的一位同事最近面试了一些求职者 其中一位说他们有非常好的 Perl 经验 由于我的同事不懂 Perl 他要求我对那位潜在雇员编写的 场外 一些代码进
  • Perl:散列 2 中数组的数值排序(施瓦茨变换)

    这实际上是该线程的后续内容 Perl 散列中数组的数字排序 https stackoverflow com questions 7914931 perl numerical sort of arrays in a hash 我无法编辑原始问
  • 在 Perl 中查找标量变量的数据类型

    我有一个接受用户输入的函数 输入可以是整数 浮点数或字符串 我有三个重载函数 应该根据输入数据的数据类型调用它们 例如 如果用户输入一个整数 比如100 则应该调用具有整数参数的函数 如果用户输入字符串 例如 100 则应调用具有字符串参数
  • 将多对多关系与实体框架中的属性映射

    我总是使用属性将实体的属性映射到相应的列 这是一个例子 Table news entries public class News Key public int Id get set Column d date public DateTime
  • 使用 Perl 写入文件的最简单方法是什么?

    目前我正在使用 system echo panel login panel password root name root pass port panel type gt gt home shared ftp 使用 Perl 做同样的事情最
  • Perl:Chomping字符串后,它不打印字符串的值

    所以我目前正在尝试编写一个 perl 脚本来读取一个文件并写入另一个文件 目前 我遇到的问题是从解析的行中删除换行符 我输入这样的文件 BetteDavisFilms txt 1 Wicked Stepmother 1989 as Mira
  • 有没有对数字(千)进行分组的函数?

    小 模块中是否隐藏着一个函数 它为我执行此操作 my var 23654325432 var reverse var var s d 3 K d g var reverse var I like 数字 格式 http search cpan
  • Perl 构建、单元测试、代码覆盖率:一个完整​​的工作示例

    我找到的关于 Perl 构建过程 单元测试和代码覆盖率的大多数 Stackoverflow 答案都只是将我指向 CPAN 那里的文档 指向 CPAN 模块绝对没有任何问题 因为完整的文档应该位于此处 不过 在很多情况下 我很难找到完整的工作
  • 匹配有限自然数列

    我怎样才能匹配有限自然数 http en wikipedia org wiki Natural number正则表达式系列 所以 要求是 字符串包含数字和空格 作为分隔符 第一个数字是1 每个数字 第一个数字除外 等于前一个数字 1 应该是
  • 标量值错误(使用 IO::Socket)

    这是我当前的代码 usr bin perl w use strict require IO Socket while lt gt chomp my host my header print Connecting to host n my s
  • Perl LWP::简单 HTTPS 错误

    我正在尝试获取网站的内容并打印 该代码按照我希望的方式在常规 HTTP 网站上运行 但它不适用于 HTTPS 我已经查找了此问题的修复程序 但它们在我的程序中不起作用 这是我目前拥有的代码 usr bin perl use strict u
  • Perl 删除目录中的所有文件

    我怎样才能删除allPerl 中目录中的文件 不删除目录 我的主机只允许最多 250 000 个 文件 而我的 tmp 文件夹会在所有会话 cookie 运行的情况下快速填充 250 000 个 qouta 在这种情况下我无法删除 tmp
  • Perl 中如何释放内存?

    我的代码如下所示 my var my var new while 1 while my k v each var a sub v var A map var var new keys var new var new B sub a sub
  • 使用 Perl 循环 JSON [重复]

    这个问题在这里已经有答案了 我是 Perl 的新手 想要循环这个 JSON 数据并将其打印到屏幕上 我怎样才能做到这一点 arr Year 2012 Quarter Q3 DataType Other 3 Environment STEVE
  • Perl 中的布尔函数应该返回什么值?

    简短的问题 在 Perl 代码库中一致表示真假的最佳方法是什么 1 0 1 Perl 原生布尔运算符的特殊空字符串 return undef 即空列表 问题背景 我们都知道 Perl 在布尔值方面非常灵活 就像大多数事情一样 例如 Perl
  • Path::Class::File 或 ::Dir & Moose 初始化和强制

    目前有 package Local use warnings use Moose use Method Signatures Simple use Path Class File use Path Class Dir method buil

随机推荐

  • 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