[Catalyst] Adding relationships to loaded CDBI models
Danijel Milicevic
Danijel.Milicevic at rawmode.org
Thu Jun 16 19:20:51 CEST 2005
Hello Christopher,
Am Donnerstag, den 16.06.2005, 13:15 -0400 schrieb Christopher Heschong:
> So a model based on Catalyst::Model::CDBI loads up all my tables and
> columns, sweet.
>
> But then how do I extend one of those auto-generated classes with extra
> relationships.
>
> For instance, in my MyApp::M::CDBI I would like to do this:
>
>
> package MyApp::M::CDBI;
> use base 'Catalyst::Model::CDBI';
> __PACKAGE__->config( ... );
>
> MyApp::M::CDBI::Table->has_a (
> date => 'Class::Date',
> inflate => 'new',
> deflate => 'epoch'
> );
>
> 1;
>
>
> But at the time that MyApp::M::CDBI is loaded, the MyApp::M::CDBI::Table
> class doesn't exist yet. I could use Catalyst::Model::CDBI::Plain and
> define everything myself, but is there any way to take the ease of
> C::M::CDBI and extend it a little?
All you have to do is supply a dbi path to the myapp_create.pl helper
script, it'll create classes for your tables. An example:
gabb at spalato:~/MyApp$ sqlite3 /tmp/myapp.db < myapp.sql
gabb at spalato:~/MyApp$ script/myapp_create.pl model CDBI CDBI dbi:SQLite:/tmp/myapp.db
created "/home/gabbana/MyApp/script/../lib/MyApp/M/CDBI.pm"
created "/home/gabbana/MyApp/script/../lib/MyApp/M/CDBI"
created "/home/gabbana/MyApp/script/../lib/MyApp/M/CDBI/Item.pm"
Then you add the relationships in MyApp::M::CDBI::Item, and _NOT_ in CDBI.pm.
Re-running the helper script won't overwrite existing modules btw, so you can run it everytime you update your SQL.
Regards,
Danijel
More information about the Catalyst
mailing list