首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用列别名创建DBIx ResultSet

使用列别名创建DBIx ResultSet
EN

Stack Overflow用户
提问于 2012-11-01 08:06:41
回答 1查看 966关注 0票数 2

我已经开始使用DBIx::Class,我非常喜欢它,但真正让我感到烦恼的是,列别名似乎没有完全工作。

例如:假设我有这个表定义:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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"}
                         );

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 $schema->resultset("TestClass")->create(name => "test", value => "value");

上面的内容将是:DBIx::Class:ResultSet::create():No这类列名在数据库上::Schema::ResultSet::TestClass

但是,以下功能很好:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 $schema->resultset("TestClass")->create(NAME => "test", VALUE => "value");

如果以后我有TestClass对象,并尝试以这样的方式访问它的列:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 $object->NAME;

我无法通过package获得对象方法"NAME“数据库::Schema::Result::TestClass”

但这没问题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 $object->name

我希望能够使用我提供的列的访问器来创建对象,并且对于创建对象和访问列是一致的,但情况似乎并非如此。有人能解释一下为什么吗?

EN

回答 1

Stack Overflow用户

发布于 2013-05-05 11:25:55

我认为你的困境的答案在于part 3 of the 。另外, class声明:使用它( accessor属性)为此列设置访问器方法的名称。如果未设置,则将使用列的名称。

基本上,您所做的是定义一个列NAME并为它创建一个访问器( name )。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13180997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文