[Catalyst] How do I access 'Catalysed' custom datasets?
Matt S Trout
dbix-class at trout.me.uk
Sun Apr 6 18:04:52 BST 2008
On Tue, Mar 18, 2008 at 07:40:45PM +0000, Ian Sillitoe wrote:
> This may be more of a DBIx::Class issue - if so, apologies - however I think
> it come down to my lack of understanding of exactly what Catalyst is doing
> when it loads DBIx::Class modules hence why I've posted this problem to the
> catalyst mailing list.
>
> I need to do some sub-selects in DBIx::Class so I've written a function that
> returns a custom resultset depending on some variables - if the resultset
> hasn't already been created then it creates and registers this resultset
> before returning it (based on DBIx::Class::Manual::Cookbook - "Arbitrary SQL
> through a custom ResultSource").
>
>
> package MySchema::Domain;
>
> use base 'DBIx::Class';
>
> # I'm using a 'static' custom resultset in addition to the 'dynamic' ones
> __PACKAGE__->resultset_class('MySchema::Domain::ResultSet');
>
> __PACKAGE__->load_components("Core");
> __PACKAGE__->table("domain");
> __PACKAGE__->add_columns();
>
> sub get_custom_resultset {
> my ($from, $to) = @_;
> my $result_source_name = "ResultSetFrom${from}To${to}";
> my $result_source;
>
> # check if we haven't already made this
> if ( grep { $reps_source_name eq $_ } MySchema->sources() ) {
Don't do that. -always- get a schema passed to you, rather than hard coding
a class. Also, never write class methods in DBIC. If you want methods, add
methods - on row objects for single-record methods, on resultsets for
collection methods, and on the schema for global things.
--
Matt S Trout Need help with your Catalyst or DBIx::Class project?
Technical Director http://www.shadowcat.co.uk/catalyst/
Shadowcat Systems Ltd. Want a managed development or deployment platform?
http://chainsawblues.vox.com/ http://www.shadowcat.co.uk/servers/
More information about the Catalyst
mailing list