dbix::class 带有附加参数的多对多 JSON
dbix::class many-to-many with additional parameters as a JSON
我在 DBIx::Class
中有一个类似于 DBIx:Class many-to-many relationship with additional attribute 的多对多关系。考虑 user_task
table 上的相同示例,其中 params
列是文本类型。
我一直在 table 列中使用 JSON 字符串,并像在
中那样执行 inflate/deflate
__PACKAGE__->inflate_column(
'params',
{ inflate => sub {
decode_json shift;
},
deflate => sub {
encode_json shift;
}
}
);
结果
use Data::Dump qw/dd/;
my $user_task = $schema->resultset("UserTask")->find({userid=>1,taskid=>1});
dd {$user_task->get_columns};
结果
{userid=>1,taskid=>1,role=>"admin",params=>"{}"}
但是如果
dd {$user_task->get_inflated_columns};
我没有得到预期的结果。似乎所有的柱子都在膨胀。从文档 https://metacpan.org/pod/DBIx::Class::Row#get_inflated_columns 来看,它似乎应该只膨胀那些具有 inflate_column
for.
的列
这似乎也只适用于多对多桥 table,因为如果我在非多对多结果上调用 get_inflated_columns
,就会出现预期的结果。
问题
这是错误(或功能)吗?如果它是一项功能,是否有它不起作用的原因?
或者,我可以通过仅在 params
列上有选择地调用 get_inflated_column
来构建结果。这似乎是不必要的,但也许是一个合理的解决方法。
如上所述,详细信息在 many_to_many
调用中,其中我将 userid
作为第三个参数,参见 the documentation for many_to_many。它应该是访问者的名字。
我在 DBIx::Class
中有一个类似于 DBIx:Class many-to-many relationship with additional attribute 的多对多关系。考虑 user_task
table 上的相同示例,其中 params
列是文本类型。
我一直在 table 列中使用 JSON 字符串,并像在
中那样执行 inflate/deflate__PACKAGE__->inflate_column(
'params',
{ inflate => sub {
decode_json shift;
},
deflate => sub {
encode_json shift;
}
}
);
结果
use Data::Dump qw/dd/;
my $user_task = $schema->resultset("UserTask")->find({userid=>1,taskid=>1});
dd {$user_task->get_columns};
结果
{userid=>1,taskid=>1,role=>"admin",params=>"{}"}
但是如果
dd {$user_task->get_inflated_columns};
我没有得到预期的结果。似乎所有的柱子都在膨胀。从文档 https://metacpan.org/pod/DBIx::Class::Row#get_inflated_columns 来看,它似乎应该只膨胀那些具有 inflate_column
for.
这似乎也只适用于多对多桥 table,因为如果我在非多对多结果上调用 get_inflated_columns
,就会出现预期的结果。
问题
这是错误(或功能)吗?如果它是一项功能,是否有它不起作用的原因?
或者,我可以通过仅在 params
列上有选择地调用 get_inflated_column
来构建结果。这似乎是不必要的,但也许是一个合理的解决方法。
如上所述,详细信息在 many_to_many
调用中,其中我将 userid
作为第三个参数,参见 the documentation for many_to_many。它应该是访问者的名字。