我正在使用基于DBIx :: Class(Loader)的ORM构建应用程序。我的大多数数据库模型都有一个“名称”列。我的一个控制器主要使用“名称”列搜索所有模式类。但是,有几个模式类没有“名称”列。
在DBIx :: Class中是否可以添加一种使用另一列的“虚拟”列:
$resultset('Account')->search({name => 'foobar'})
秘密改写
$resultset('Account')->search({accountnumber => 'foobar'})
我希望我有意义,任何人?
THX, 罗布
答案 0 :(得分:1)
据我所知,这是不可能的 - 无论如何不是搜索查询的关键。你可以做的是为你的所有结果集类创建一个基类(你正在使用load_namespaces,对吗?),它有一个方法find_by_name
或类似的,它在正确的列上执行此搜索。该列可以默认为名称,但会被类属性覆盖 - 您可以使用mk_accessor进行设置。
您可以将此基类设置为default_resultset_class
属性为load_namespaces