DBIx :: Class虚拟列?

时间:2011-03-04 22:31:03

标签: perl catalyst dbix-class

我正在使用基于DBIx :: Class(Loader)的ORM构建应用程序。我的大多数数据库模型都有一个“名称”列。我的一个控制器主要使用“名称”列搜索所有模式类。但是,有几个模式类没有“名称”列。

在DBIx :: Class中是否可以添加一种使用另一列的“虚拟”列:

$resultset('Account')->search({name => 'foobar'})

秘密改写

$resultset('Account')->search({accountnumber => 'foobar'})

我希望我有意义,任何人?

THX, 罗布

1 个答案:

答案 0 :(得分:1)

据我所知,这是不可能的 - 无论如何不是搜索查询的关键。你可以做的是为你的所有结果集类创建一个基类(你正在使用load_namespaces,对吗?),它有一个方法find_by_name或类似的,它在正确的列上执行此搜索。该列可以默认为名称,但会被类属性覆盖 - 您可以使用mk_accessor进行设置。

您可以将此基类设置为default_resultset_class属性为load_namespaces

的所有结果集的默认结果集类