perl - 如何从 DBIx::Class 中的链接表获取值?

标签 perl dbix-class

在我的应用程序中,我有 2 个表、书籍和标签,以及链接表 book_tags。链接表还包含该书被标记为该特定标签的次数。我可以通过这样做添加标签

$book->add_tag($tag, { tag_count => 10 });

但是当我检索一本书的标签时

@tags = $book->tags();

它似乎没有从链接表返回值。

有没有一种方法可以从链接表中获取值而无需手动操作?

最佳答案

由于您有一个名为 book_tags 的联接表,因此您必须创建从 books 表到 many_to_many 关系books 表本身的 has_many 关系。 has_many 关系应从表 book_tags 中检索与图书关联的标签的 id。您可能需要添加类似于以下内容的关系:

Your::App::Schema::Result::Book中:

__PACKAGE__->has_many( book_tags => 'Your::App::Schema::Result::BookTag', 'book_id' );

__PACKAGE__->many_to_many( tags => 'book_tags', 'tag' );

Your::App::Schema::Result::BookTag中:

__PACKAGE__->belongs_to( tag => 'Your::App::Schema::Result::Tag', 'tag_id' );

关于perl - 如何从 DBIx::Class 中的链接表获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1326601/

相关文章:

perl - 如何漂亮地打印 DBIx::Class 结果?

perl - 为 DBD::Pg 数据库连接设置超时

perl cpanm 安装 make 问题

linux - 如何在 crontab 中正确设置 perl 脚本的环境变量?脚本正在使用解决方法执行

perl - 在 DBIx-Class 中使用预取时如何仅选择特定列?

mysql - 使用 Perl DBIx 在运行时设置 MySQL 时区

arrays - Perl:如何在不创建数组副本的情况下取消引用数组?

regex - Perl 正则表达式替换最后一个匹配的字符串

perl - 从 Template Toolkit 中的结果集中访问额外的选定列

perl - DBIx::Class 连接生成大量的 select 语句