2012-11-01 50 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

回答