我已经开始使用 DBIx::Class 并且在很大程度上我真的很喜欢它,但真正让我烦恼的是列别名似乎不能完全工作。
例如。假设我有这个表定义:
#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::Class::ResultSet::create(): No such column name on Database::Schema::Result::TestClass
但是,以下工作正常:
$schema->resultset("TestClass")->create(NAME => "test", VALUE => "value");
如果稍后我有 TestClass 对象并尝试访问它的列:
$object->NAME;
我通过包“Database::Schema::Result::TestClass”得到无法定位对象方法“NAME”
但这没关系:
$object->name
我希望能够使用我提供的列的访问器创建对象,并创建对象并访问列以保持一致,但情况似乎并非如此。谁能解释这是为什么?