从Class :: DBI移动到DBIx :: Class

时间:2010-03-07 11:20:57

标签: perl dbix-class class-dbi

我目前正在对DBIx :: Class进行一些研究,以便从Class :: DBI迁移我当前的应用程序。老实说,在配置结果类时,我对DBIx :: Class有点失望,使用Class :: DBI我可以通过在没有代码生成器的情况下调用on函数来设置模型上的元数据等我的问题是。 ..我可以用DBIX :: Class做同样的事情似乎DBIx :: Class中不支持客户端触发器,或者我没有查看错误的文档?

1 个答案:

答案 0 :(得分:5)

触发器可以通过在Result类中重新定义适当的方法(new / create / update / delete等),并在代码之前或之后调用其中的父(通过$self->next::method())来实现。不可否认,与Class :: DBI中的before / after触发器相比,它有点笨拙。

至于元数据 - 您是在谈论对象上的临时列吗?即不会存储在数据库行中的数据。这些可以使用CPAN上的Class :: Accessor :: *模块之一轻松添加

从CDBI切换到DBIC时最难做的变化之一是根据ResultSet进行思考 - 通常通过CDBI中的Class方法实现的内容将成为ResultSet上的方法 - 并且代码可能需要重构很明显,它并不总是从一个到另一个的直接转换。