gpt4 book ai didi

perl - 动态添加列到 DBIx::Class ResultSet

转载 作者:行者123 更新时间:2023-12-02 00:36:38 25 4
gpt4 key购买 nike

我有一个代表 eBay 拍卖的 DBIx::Class 对象。基础表有一个包含大量数据的描述列。 description 列几乎从不使用,因此它不包含在该表的 DBIx::Class 列列表中。这样,大多数查询不会获取拍卖描述数据。

不过,我确实有一个脚本需要这一栏。在这种情况下,我想像访问任何其他列一样访问描述列的内容:

$auction->description

如何在不强制所有其他查询获取描述列的情况下完成此操作?

最佳答案

DBIx::Class 的旧版本中(不确定版本号),以下用于工作:

my $rs = $schema->resultset('Auctions');
my $lots = $rs->search(
undef,
{ '+select' => 'description', '+as' => 'description' },
);

DBIx::Class 的现代版本下,这似乎不适用于行更新。尝试更新

$auction->update({ description => '...'})

DBIx::Class 0.08123 给出以下错误:“DBIx::Class::Relationship::CascadeActions::update(): No such column description at ...”

假设需要额外列的脚本正在其自己的进程中运行。你可以这样做:

my $rs = $schema->resultset('Auctions');
$rs->result_source->add_columns('description');
YourApp::Schema::Lots->add_columns('description');
YourApp::Schema::Lots->register_column('description');

当然,这是一个全局性的变化。添加该列后,同一进程中的其他代码将开始获取查询中的 description 列。更不用说,它有点丑。

关于perl - 动态添加列到 DBIx::Class ResultSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4348038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com