[Dbix-class] Class::DBI => DBIx::Class.
Todd Lorenz
trlorenz at hotmail.com
Mon Jan 23 18:26:11 CET 2006
Thanks much, everyone, for you kind feedback. Very helpful, and heartening.
TRL
>On Sat, Jan 21, 2006 at 08:11:19AM -0800, Alan Humphrey wrote:
> > I can comment on this from my on-going porting experience which has
> > generally been smooth.
>
>It gets dog-fooded regularly; we still have a fair bit of CDBI code
>deployed
>in various places ourselves, sadly.
>
> > > I tried going the Loader route for my Schema based app. No joy. I've
>had
> > to define each of my table classes by hand. Not a huge deal, but having
> > loader deal with the simple tables is something I miss. If you don't
>need
> > the Schema functionality this may not be an issue for you.
>
>There's going to be a new DBIx::Class::Schema::Loader that addresses this
>available around the same time as 0.05.
>
>As of 0.05 you're always using a Schema anyway; just if you go the DB route
>(which I strongly recommend against unless you're porting CDBI code) the
>schema object is stashed as classdata on your DB class instead :)
>
> > > Setting up relationships between tables takes some getting used to.
>This
> > is partly a problem with the docs (better, real world, examples would
>help)
> > and partly a terminology issue. For example, I was comfortable with the
> > 'has_a' term. "This bird has a genus" worked for me. The new term is
> > "belongs_to". For whatever reason I didn't get comfortable with
>belongs_to
> > until I started thinking "The genus_id column belongs to the genera
>table."
>
>I nicked it from ActiveRecord; I've never been amazingly happy with has_a,
>especially that it's overloaded to represent both FKs and column inflation.
>
> > > Key differences for my app code: the 'retrieve' method is now 'find'
>and
> > 'get' is 'get_column'.
>
>Sort of. If the column's inflated, that'll give you the deflated value,
>which
>might catch you. Best bet is usually to replace $obj->get($name) with
>$obj->$name.
>
> > If you have a lot of set_sql statements, there is a bit more work but
> > afaik there hasn't been an SQL yet that couldn't be done in DBIC.
> >
> > > This works two ways. On the one hand the statement is true - you can
>get
> > your SQL statements translated to DBIC. On the other hand, I find the
> > SQL::Abstract way of forming queries far from intuitive. Complex
>queries,
> > especially multi-table, are a struggle.
>
> > Triggers are not supported, as it is currently felt that they are not
> > necessary.
> >
> > > Hasn't been an issue for me.
>
>And there's a cookbook entry showing how to do stuff without them; given
>the
>C3 MRO if you need to run stuff before method 'foo' happens, just doing
>
>sub foo { my $self = shift; $self->stuff_before_foo(@_);
>$self->next::method; }
>
>does the trick fine without slowing everything else down while it checks to
>see if there are triggers registered for everything else.
>
> > Discussion, feature requests, bugs, problems, etc please visit
> > #dbix-class at irc.perl.org.
> >
> > > The folks on this list (especially Mr. Trout) are fantastic. Very
> > helpful, very nice. A great resource.
>
>And better still, it makes me feel less guilty about what an appalling
>documenter I am :)
>
>--
> 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/ +
>
>_______________________________________________
>List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
>Wiki: http://dbix-class.shadowcatsystems.co.uk/
>IRC: irc.perl.org#dbix-class
>SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
More information about the Dbix-class
mailing list