我们有一个MyISAM数据库(不要问我为什么不切换到InnoDB,它不受我控制)。
现在,我希望DBIx::Class::Schema::Loader
为添加*ID
的{{1}}列创建关系以获取表名。例如,s
应该将表Order.SeanceID
与表Order
关联起来。
可以Seances
被黑客攻击吗?还是编写自己的Loader更好?
答案 0 :(得分:1)
不用担心“黑客” 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
关系。