Re: Mixed Case Column Names
[prev]
[thread]
[next]
[Date index for 2005/04/14]
For portability I've decided to use Daniel's suggestion to obtain the
column name and have provided a my_columns method as Kingsley suggested:
sub my_columns
{ my ($self) = @_;
return sort map { $_->name } $self->columns;
}
As you can see I've decided to leave the ordering to sort.
Thanks very much everyone!
Kingsley Kerce wrote:
> Jay Hargreaves writes:
> > In fact the workaround I provided doesn't appear to work either - I
> > guess columns() does not use the mutator_name() method as I had expected.
> >
> > I've also just noticed that columns() does not provide the columns in
> > the order I listed them - which is also the order they appear in the
> > table. Is there anyway they can be returned in the correct order?
>
> Your ordering requirement may be satisfied by something similar to the
> following. Untested and possibly pseudocode.
>
> package TPG_Staging;
> use base TPG_DBI;
>
> @primary_columns = qw(ClientID);
> @other_columns = qw(JobReference SSC PostcodeArea Format LT_60g Machinable BagWeight BagItems Sortation AccessSiteCode AccessPoint BagID CollectionDate HandoverDate ServiceRegister MailingHouseID);
>
> __PACKAGE__->table("Staging");
> __PACKAGE__->columns(Primary => @primary_columns);
> __PACKAGE__->columns(Others => @other_columns);
>
> sub my_columns {
> return (@primary_columns, @other_columns);
> }
>
> # ...later...
>
> my @columns = TPG_Staging->my_columns;
>
> If you don't like the method name my_columns() then figure out how to
> override the columns() method appropriately.
>
> If a module doesn't do what you want then code overrides that do.
>
> Kings
>
> >
> > Thanks
> > Jay
> >
> > Jay Hargreaves wrote:
> > > Hi everyone!
> > >
> > > I have the following table module:
> > >
> > > --- TPG_Staging.pm ---
> > > package TPG_Staging;
> > > use base TPG_DBI;
> > >
> > > __PACKAGE__->table("Staging");
> > > __PACKAGE__->columns(Primary => qw(ClientID));
> > > __PACKAGE__->columns(Others => qw(JobReference SSC PostcodeArea Format
> > > LT_60g Machinable BagWeight BagItems Sortation AccessSiteCode
> > > AccessPoint BagID CollectionDate HandoverDate ServiceRegister
> > > MailingHouseID));
> > > ---
> > >
> > > When I query the columns that are contained in the table:
> > >
> > > my @columns = TPG_Staging->columns;
> > >
> > > I receive a list of the columns as expected but with all the the names
> > > in lower case. It is important that the column names are presented AS IS
> > > since they are used directly in my user interface.
> > >
> > > Is this lower-casing always the case with Class::DBI? I have not
> > > experienced this problem before as I tend to use lower-case column names
> > > as standard. Is there a way around this problem other than providing
> > > explicit mappings from the lower-case name to the uppercase name:
> > >
> > > ---
> > > # accessor is simple enough
> > > sub accessor_name
> > > { my ($class, $column) = @_;
> > > return lc $column;
> > > }
> > >
> > > # mutator requires explicit mapping
> > > sub mutator_name
> > > { my ($class, $column) = @_;
> > > my %mutator = ( clientid => 'ClientID',
> > > jobreference => 'JobReference',
> > > ...
> > > );
> > > return $mutator($column);
> > > }
> > > ---
> > >
> > > I am using Class::DBI 0.96 on Windows XP with MySQL ver 4.0.15.
> > >
> > > Thanks
> > > Jay
> > >
> >
> > --
> > a: 89 hodge lane, hartford, northwich, cw8 3ag
> > m: 07899 872 306
> > e: jay@xxxxxxx.xxx
> >
> > ______________________________________________________________________
> > This email has been scanned by the MessageLabs Email Security System.
> > For more information please visit http://www.messagelabs.com/email
> > ______________________________________________________________________
>
--
a: 89 hodge lane, hartford, northwich, cw8 3ag
m: 07899 872 306
e: jay@xxxxxxx.xxx
______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
______________________________________________________________________