[Dbix-class] DBIx schema loader (dump schema using make_schema_at) wierd behaviour

Patrick Meidl patrick at pantheon.at
Wed Aug 8 07:03:02 GMT 2012

On Wed, Aug 08 2012, Rajeev Prasad <rp.neuli at yahoo.com> wrote:

> am I missing anything? when I dump schema of my database using schema
> loader's make_schema_at. Some .pm file names under Result
> corrosponding to folders have names chnaged! they do not match to
> table names!!   
> e.g. table name costlycookies shows up as Costlycooky.pm !!! another
> table cheapcookis show up as Cheapcooky.pm another table named els is
> showing up a El.pm !!!   

see here:


this states that the default behaviour of schema loader is to
singularise table names (so that your Result classes are singular). this
makes sense, since each of your objects represents a single entity.

you can override this behaviour, though:


>  DBIx::Class::Schema::resultset(): Can't find source for Costlycookies
> at /my/path/cgi-bin/myscript.pl line 53  
>  $coki_rs = $schema->resultset('Costlycookies')->search(....

since this singularisation is also performed for the ResultSet classes,
you have to call

    $coki_rs = $schema->resultset('Costlycooky')->search(....

to fetch cookies from the db.

whether it is best practice to use singular or plural table names is a
controversial question, see e.g. this thread:


I always use singular, since this is easiest to handle for ORMs (as your
question shows, plurals can cause confusion).



Patrick Meidl ........................ patrick at pantheon.at
Vienna, Austria ...................... http://gplus.to/pmeidl

More information about the DBIx-Class mailing list