Переход от Class :: DBI к DBIx :: Class

В настоящее время я провожу небольшое исследование DBIx :: Class, чтобы перенести мое текущее приложение из Class :: DBI. Честно говоря, я немного разочарован DBIx :: Class, когда дело доходит до настройки результирующих классов, с Class :: DBI я мог устанавливать метаданные на моделях, просто вызывая функцию on без генератора кода, и так на мой вопрос. .. могу ли я сделать то же самое с DBIX :: Class, также кажется, что триггеры на стороне клиента не поддерживаются в DBIx :: Class, или я не смотрю не те документы?


person marghi    schedule 07.03.2010    source источник
comment
немного поздно, но я никогда не видел этого до сих пор - вы должны были пометить это с помощью 'perl'   -  person plusplus    schedule 14.07.2010


Ответы (1)


Триггеры могут быть реализованы путем переопределения соответствующего метода (new / create / update / delete и т. Д.) В классе Result и вызова родительского элемента (через $self->next::method()) внутри него либо до, либо после вашего кода. По общему признанию, это немного неуклюже по сравнению с триггерами до / после в Class :: DBI.

Что касается метаданных - вы говорите о временных столбцах на объекте? т.е. данные, которые не будут храниться в строке базы данных. Их можно легко добавить с помощью одного из модулей Class :: Accessor :: * на CPAN.

Одно из самых сложных изменений при переключении с CDBI на DBIC - думать в терминах ResultSets - часто то, что было бы реализовано с помощью метода Class в CDBI, становится методом в ResultSet - и код может нуждаться в значительном рефакторинге, это не всегда прямое преобразование из одного в другое.

person plusplus    schedule 14.07.2010