[Catalyst] Database schema -- Can't locate object method "new" via package
Matt S Trout
dbix-class at trout.me.uk
Fri Jun 16 19:34:08 CEST 2006
Sarah Berry wrote:
> As far as documentation, I've been working from the introduction to the
> DBIx class at
> http://www.annocpan.org/~MSTROUT/DBIx-Class-0.06999_02/lib/DBIx/Class/Manual/Intro.pod
> <http://www.annocpan.org/~MSTROUT/DBIx-Class-0.06999_02/lib/DBIx/Class/Manual/Intro.pod>
> , as well as referencing a great thread from the list archives
> (http://www.gossamer-threads.com/lists/catalyst/users/7463?search_string=schema%20loader
> <http://www.gossamer-threads.com/lists/catalyst/users/7463?search_string=schema%20loader>)
> where there's a detailed example of what files go in what Catalyst
> folders (Model vs. Schema, etc).
>
> I put the following command on my page (dbixdemo.pm
> <http://dbixdemo.pm>), and it rendered fine in the browser:
> my $schema = $c->model("SLogDB");
my $schema = $c->model("SLogDB")->schema;
> When I tried to follow it up with
> my $attempt = $schema->resultset('tblsmaps')->find(14);
> I got the error
> Caught exception in vieSEB::Controller::dbixdemo->default "Can't
> locate object method "resultset" via package "vieSEB::Model::SLogDB"
why not just do
my $map = $c->model("SLogDB::tblsmaps")->find(14);
?
Also, "tblsmaps" is an awful name for a class. If it's a map class, call it "Map".
> Maybe I have the wrong plugin installed or something. Jess, in your
> example, what should Foo be? A table in the database? A query you set up
> somewhere else?
>
> Thanks again,
>
> Sarah
>
>
>
> On 6/16/06, *Jess Robinson* <castaway at desert-island.demon.co.uk
> <mailto:castaway at desert-island.demon.co.uk>> wrote:
>
>
>
> On Thu, 15 Jun 2006, Kevin Old wrote:
>
> > On 6/15/06, Sarah Berry < berry.sarah at gmail.com
> <mailto:berry.sarah at gmail.com>> wrote:
> >> I'm trying to learn how to use the database plugins,
> specifically DBIx. I
> >> set up my schemas to load from an existing database (hopefully),
> and now I
> >> want to test it out to see if I did that right. So I put the
> following lines
> >> into a page called dbixdemo.pm <http://dbixdemo.pm>, in the
> "default" function:
> >>
> >> my $schema = VieSEB::Schema::SLogDB->new();
> >> my $crazy_attempt =
> >> $schema->resultset('SLogDB')->find(14);
> >
> > Hi Sarah,
> >
> > Make your calls in Controllers like this:
> >
> > $c->model("VieSEB::Schema::SLogDB")->new();
> > $c->model("VieSEB::Schema::SLogDB")->search();
> > $c->model("VieSEB::Schema::SLogDB")->find();
> >
>
> Or, more sanely:
>
> my $schema = $c->model("SLogDB");
> my $attempt = $schema->resultset('Foo')->find(14);
>
> or even:
>
> my $attempt = $c->model('SLogDB::Foo')->find(14);
>
> You shouldnt need to call ->new, as Catalyst does that for you, and
> stores
> the result, which you can retrieve using $c->model.
>
> Are there not examples in the Catalyst::Model::DBIC::Schema pod?
>
> Jess
>
>
> _______________________________________________
> List: Catalyst at lists.rawmode.org <mailto:Catalyst at lists.rawmode.org>
> Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
> Searchable archive:
> http://www.mail-archive.com/[email protected]/
> Dev site: http://dev.catalyst.perl.org/
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> List: Catalyst at lists.rawmode.org
> Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/[email protected]/
> Dev site: http://dev.catalyst.perl.org/
--
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 Catalyst
mailing list