Perl DBIx::Class - 使用 new() 时的默认值?

标签 perl dbix-class

当在 DBIx::Class ResultSource 上使用 new() 方法来创建(可能是临时的)变量时,它似乎没有使用 DBIC 模式中指定的默认值填充属性(我们已经指定用于从该模式创建表)架构)。

目前,我们正在为一个这样的类创建一个默认值(这是一个问题的第一种情况)

sub new {
  my $class = shift;
  my $self = $class->next::method(@_);
  $self->queue('DEFAULT_QUEUE_VAL') unless $self->queue();
  return $self;
}

在那个类中(即属性 queue=>DEFAULT_QUEUE_VAL)。但是,从长远来看,我们有几个 DBIC 类具有不同的默认值,我们希望避免在所有不同的情况下重复上述逻辑。

是否有任何可用的 CPAN 模块/插件来执行此操作?我们在(诚然粗略的)CPAN 搜索中没有看到任何内容。

编辑:修复了代码示例中的一些垃圾;原来我 cp'd 来自过时的代码。

最佳答案

看起来没有 DBIC 组件,您可以对现有代码使用一个小模块来做到这一点:

sub new {
  my $class = shift;
  my $self = $class->next::method(@_);
  foreach my $col ($self->result_source->columns) {
    my $default = $self->result_source->column_info($col)->{default_value};
    $self->$col($default) if($default && !defined $self->$col());
  return $self;
}

由于它是直截了当的,因此组件没有多大意义。

关于Perl DBIx::Class - 使用 new() 时的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2106504/

相关文章:

perl - 有没有办法使用现有的 DBI 数据库句柄连接到 DBIx::Class 模式?

php - 排序/解析 MySQL 行字段中的异构 CSV 分隔文本值

perl - 为什么 Perl 模块 Crypt::SSLeay 在加载时出错?

perl - 如何处理 Perl 中方法链中的错误?

postgresql - 我可以在连接后定义 DBIx::Class::ResultSource::View 吗?

json - 如何将 DBIx::Class::ResultSet 转换为 JSON

regex - Perl 正则表达式 获取电子邮件地址

perl - 如何获取 Mojolicious::Lite 选择的端口?

启用 javascript 的按钮在 IE 中不正确发布

perl - 使用 DBIx::Class::ResultSet 的 find_or_create 方法时如何避免竞争条件?