[Dbix-class] name collision

Jeremy J. Koch jjkoch at gwi.net
Thu Jul 3 21:21:52 BST 2008


I have the luck of a table with a column named "source_name".

This of course results in a hilarious situation:
DBIx::Class::Row::get_column(): Can't fetch data as class method at (eval 6724)

Normally I would take the easy route and rename the column.  Unfortunately 
the schema is defined by a proprietary application I am integrating with so
this is not an option.  The only solution I could come up with was to omit
"source_name" column from the schema class.  Then to use +select with +as
resultset attributes to specify an a different name for the column. 

Any thoughts?  Have I overlooked a simpler solution?

Thank you,
-Jeremy


---

package MyApplication::Schema::TableName;

use strict;
use warnings;

use base 'DBIx::Class';

__PACKAGE__->load_components("Core");
__PACKAGE__->table("TableName");
__PACKAGE__->add_columns(
  "session_id",
  {
    data_type => "int identity",
    default_value => undef,
    is_nullable => 0,
    size => 10,
  },
  "created_date",
  { data_type => "datetime", default_value => 3, is_nullable => 0, size => 23 },
  "source_name",
  {
    data_type => "varchar",
    default_value => undef,
    is_nullable => 0,
    size => 255,
  },
);



More information about the DBIx-Class mailing list