2

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

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

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

偷偷改写为

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

我希望我是有道理的,有人吗?

谢谢,罗伯

4

1 回答 1

1

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

您可以将此基类设置为具有load_namespacesdefault_resultset_class属性的所有结果集的默认结果集类

于 2011-03-07T13:41:52.993 回答