В настоящее время я провожу небольшое исследование DBIx :: Class, чтобы перенести мое текущее приложение из Class :: DBI. Честно говоря, я немного разочарован DBIx :: Class, когда дело доходит до настройки результирующих классов, с Class :: DBI я мог устанавливать метаданные на моделях, просто вызывая функцию on без генератора кода, и так на мой вопрос. .. могу ли я сделать то же самое с DBIX :: Class, также кажется, что триггеры на стороне клиента не поддерживаются в DBIx :: Class, или я не смотрю не те документы?
Переход от Class :: DBI к DBIx :: Class
Ответы (1)
Триггеры могут быть реализованы путем переопределения соответствующего метода (new / create / update / delete и т. Д.) В классе Result и вызова родительского элемента (через $self->next::method()
) внутри него либо до, либо после вашего кода. По общему признанию, это немного неуклюже по сравнению с триггерами до / после в Class :: DBI.
Что касается метаданных - вы говорите о временных столбцах на объекте? т.е. данные, которые не будут храниться в строке базы данных. Их можно легко добавить с помощью одного из модулей Class :: Accessor :: * на CPAN.
Одно из самых сложных изменений при переключении с CDBI на DBIC - думать в терминах ResultSets - часто то, что было бы реализовано с помощью метода Class в CDBI, становится методом в ResultSet - и код может нуждаться в значительном рефакторинге, это не всегда прямое преобразование из одного в другое.