【发布时间】: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