2012-11-01 23 views
2

我已经开始使用DBIx :: Class,但我真的很喜欢它,但真正开始困扰我的是列别名似乎不能完全工作。使用列别名创建DBIx结果集

例如,假设我有此表的定义:

#TestClass.pm 

use strict; 
use warnings; 

package Database::Schema::Result::TestClass; 

use base qw/DBIx::Class::Core/; 

__PACKAGE__->table("TEST_TABLE"); 
__PACKAGE__->add_column("ID") 
__PACKAGE__->add_columns(NAME => {accessor => "name"}, 
         VALUE => {accessor => "value"} 
         ); 

然后我尝试如下,以创建一个新行:

$schema->resultset("TestClass")->create(name => "test", value => "value"); 

以上会说: DBIx ::类::的ResultSet ::创建( ):没有在数据库::模式::结果,例如列名:: TestClass的

但是以下工作正常:

$schema->resultset("TestClass")->create(NAME => "test", VALUE => "value"); 

如果以后我有TestClass的对象,并试图访问其列,如:

$object->NAME; 

我得到无法找到对象的方法“NAME”通过一揽子“数据库::模式::结果:: TestClass的”

,但是这是确定:

$object->name 

我希望能够用我提供的列和创建对象的存取和访问的列是一致的创建对象,但是这并不似乎是这样。任何人都可以解释为什么这是?

+1

“不工作”创建访问是不是一个有用的错误描述,请粘贴实际的错误信息! –

+2

你在告诉add_columns'NAME'和'VALUE',但你告诉创建'name'和'value'。 SQL可能不区分大小写,但DBIx :: Class可能不是。 – Schwern

回答