我们有一个MyISAM DB(不要问我为什么不切换到InnoDB,它不是由我控制的(。
现在,我希望DBIx::Class::Schema::Loader
为*ID
列创建关系,添加s
以获取表名。例如,Order.SeanceID
应将表Order
与表Seances
相关联。
DBIx::Class::Schema::Loader
可以被黑客入侵来做到这一点吗?还是编写我自己的加载器更好?
不要担心"黑客攻击"DBIx::Class::Schema::Loader来处理这个问题。只需生成类,然后手动添加关系。
使用 DBIx::Class::Schema::Loader 生成的每个类都将在底部包含如下所示的文本:
# Created by DBIx::Class::Schema::Loader v0.07043 @ 2018-07-09 09:56:55
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:6//4n3Crnz9U/q6GZ0Fwtg
# You can replace this text with custom code or comments, and it will be preserved on regeneration
如最后一条注释所述,如果您重新生成类,则在此文本下方的文件中插入的任何内容都将保留。因此,您可以安全地手动将关系信息添加到文件的此部分,并知道下次重新生成类时它仍然存在。
不要忘记,您需要添加关系的两端 - 例如,父表中的has_many
关系和关联的子表中的互惠belongs_to
关系。