【问题标题】:DBIX Class- same result class for multiple tablesDBIX 类 - 多个表的相同结果类
【发布时间】:2015-01-08 21:21:24
【问题描述】:

我的数据库中有许多具有相同结构的表。我想为该组表创建一个通用结果类(包 DBIx::Class),并通过以某种方式即时更改表名来为所有表使用相同的类。

我该怎么做?

编辑 受到@abraxxa 回答的鼓舞,我正在扩展同样的问题。 在我的数据库中,我为许多具有共同结构的客户提供了一组表。创建一组通用的结果类后,我想以下列方式对所有客户使用相同的结果类。

客户 1

tableA_1 表B_1 表C_1

客户N

tableA_N 表B_N 表C_N

在处理客户 N 时,我想管理 tableA、tableB 和 tableC,以便同时维护它们的关系。就像,如果我从 tableA 中访问 tableB,那么对于客户 1,它应该访问 tableB_1,对于客户 N,应该访问 tableB_N。

能否请您为 tableA 概述一个基类,然后再为它概述一个子类。

【问题讨论】:

  • 我知道这艘船可能已经航行了,但是如果结构相同,为什么不为每个客户提供一个模式/数据库?然后使用__PACKAGE__->table('schema.table') 完全限定您的模式,并且可以进行跨模式连接(假设托管在同一台服务器上)。然后可以使用通用的结果集和结果。
  • @mikew 我实际上正在一一揭开事实。所有这些表都在相同的模式中,并且还共享全局表。所以 tableA_1 和 tableA_2 都使用相同类型的结构与 global_table 连接。

标签: perl dbix-class


【解决方案1】:

创建一个 Result 基类并将其子类化为每个现有表只调用

__PACKAGE__->table('tablename');

在每个子类中。 由于它们之间的关系,DBIx::Class 仍然需要了解所有现有表。

【讨论】:

    猜你喜欢
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 2019-08-06
    • 2020-10-25
    • 2013-03-24
    • 2020-06-18
    • 1970-01-01
    相关资源
    最近更新 更多