私は 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
列を提供したアクセサーを使用してオブジェクトを作成し、オブジェクトの作成と列へのアクセスを一貫させることができると期待していますが、そうではないようです。これがなぜなのか説明できる人はいますか?