如何通过DBIx::Class add_column复合类型的表?

How to add_column for table with composite type via DBIx::Class?

提问人:Eugen Konkov 提问时间:4/20/2021 更新时间:4/20/2021 访问量:64

问:

https://www.postgresql.org/docs/current/rowtypes.html#ROWTYPES-DECLARING

每当创建表时,也会自动创建一个与表同名的复合类型

因此,如果数据库服务器返回了这种复合类型(我使用的是PostgreSQL)。 我应该如何声明我的专栏?

package App::Schema::Result::Example;

use utf8;
use Modern::Perl;
use parent 'App::Schema::Result';



my $X =  __PACKAGE__;
$X->table_class('DBIx::Class::ResultSource::View');

$X->table('example');
$X->result_source_instance->is_virtual(1);
$X->result_source_instance->view_definition( <<'SQL' );
  select t from my_table t; -- NOTICE: I return row as composite type
SQL

$X->add_columns(
    t => {
        data_type => '????',
    },
);

如果我已经有,我可以写:或者?my_tableApp::Schema::Result::Tabledata_type => my_tabledata_type => App::Schema::Result::Table

万一我不能。如何解释如何从列中提取数据?DBIx::Classt

Perl dbix 类 复合类型

评论


答:

0赞 Eugen Konkov 4/20/2021 #1

我找到了一个如何完成此操作的线程:https://groups.google.com/g/perl.dbd.pg/c/roY9y-Tq198?pli=1

所以我们有拖曳方式:

  1. 使用 PGObject perl 模块
  2. 使用 InflateColumn 功能