我正在研究DBIx类,我有点困惑,因为到目前为止,我与数据库的交互都是用PHP代码编写的纯SQL查询。
无论如何,据我所知,该类使用在结果类中定义的模式进行操作,而不是直接与数据库交互。模式可以通过各种.pm类手动构建,也可以通过Loader类从数据库中提取。
我的问题是:解决这个问题的首选方法是什么?如果我手动构建我的结果类,然后修改我的数据库,该怎么办?我想我必须同时编辑表和类,这是不是有点不切实际?
谢谢
发布于 2009-11-02 23:25:50
使用像DBIx::Class这样的对象关系映射系统的困难之一是您必须使表类与您的模式保持同步。通常,它就像在这里和那里添加一个字段一样简单,也许偶尔会添加一个新的外键关系。如果你的代码处于版本控制中,那么跟踪它应该是相对简单的。
在两个地方维护相同的东西(DB模式)的缺点被ORM系统的优势所盖过(IMHO)。一旦您习惯了使用DBIx::Class查询和它们的ResultSets,就会比一直编写原始的DBI调用要快得多。
就我个人而言,我使用Loader类不太走运,但我已经有一段时间没有尝试过它们了。如果它们对您有效,则可能比在代码中手动维护您的模式定义更容易。另一方面,我从来没有被这需要的微不足道的努力所困扰。一旦系统启动并运行,数据库模式往往不会频繁更改。
https://stackoverflow.com/questions/1661669
复制相似问题