加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 23:33:25 所属栏目:大数据 来源:网络整理
导读:在DBIx :: Class ResultSource上使用new()方法创建(可能是临时的)变量时,它似乎不会使用DBIC模式中指定的默认值填充属性(我们已指定用于从中创建表)模式). 目前,我们正在为一个这样的类创建一个默认值(第一种情况,这是一个问题) sub new { my $class = shift
在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组件,你可以使用现有代码的一个小mod来实现:

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;
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读