[CDBI] re-casting cdbi classes?
Matt S Trout
dbix-class at trout.me.uk
Thu Mar 23 01:33:48 GMT 2006
William Ross wrote:
> On 18 Mar 2006, at 22:35, Ben Lavender wrote:
>> Hi all,
>> I've come across a situation where a client needs a change in
>> requirements which would, ideally, require a slight slight breaking
>> out of one class into a base class and two sub classes. Put shortly,
>> I have an event which is based on due dates right now, but some
>> classes of events are turning up which need to be done based on
>> mileage instead.
> Class::DBI doesn't like data classes to inherit from one another, and I
> very much doubt that it would like objects to switch from one data class
> to another after they've been retrieved. I'm sure it could be made to
> work, but the way cdbi holds closures at class level and its increasing
> use of plugins make it fairly horrible to debug that kind of code, or it
> does for me anyway.
Inheritance was fine as of 0.96 before Tony started doing Odd Things With
Closures. Class::DBI::Frozen::301 may work here.
DBIx::Class' inflate_result method which can be overridden to rebless
trivially is a better solution, but probably impossible to backport.
> My advice, based on 8ish years of repeatedly trying to bend cdbi out of
> shape, is don't. Do it the official cdbi way or find another ORM that
> matches your problem better: there's plenty of choice now.
I've bent CDBI out of shape successfully a fair few times - the notable result
being the join and prefetch code in Class::DBI::Sweet. Eventually I gave up
and decided to re-implement from the ground up with direct community
involvement, native join, prefetch, aggregate and other complex query support
and a structure designed from the ground up to be overridable as required.
Oh, and DBIx::Class 0.06 will be out shortly with has_many prefetch, HAVING
support and much-improved docs. Keep an eye on CPAN - I'd announce to the CDBI
list but I get too much hate mail when I do :)
Matt S Trout Offering custom development, consultancy and support
Technical Director contracts for Catalyst, DBIx::Class and BAST. Contact
Shadowcat Systems Ltd. mst (at) shadowcatsystems.co.uk for more information
+ Help us build a better perl ORM: http://dbix-class.shadowcatsystems.co.uk/ +
More information about the ClassDBI