我的Entry结果类有以下关系:
package Schema::Result::Entry;
__PACKAGE__->has_many(
"entry_i18ns",
"Schema::Result::EntryI18n",
{ "foreign.entry_id" => "self.id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
所以我想从新创建的Schema :: Result :: Entry对象中检索相关数据:
$result = $schema->resultset('Result')->create({ entry_i18ns => { title => 'foo', language_code => 'en' } });
问题是entry_i18ns
访问器执行额外的SELECT并返回所有相关的EntryI18n对象,而不是使用create()调用创建的特定对象。
据我所知,我需要的数据存储有$result->{_relationship_data}{entry_i18ns}
数组引用,所以我可以访问它,如
my $related_data = $result->{_relationship_data}{entry_i18ns}[0]{_column_data};
但是如何在不搞乱内部DBIC私有存储的情况下做到这一点?
答案 0 :(得分:1)
在DBIC中没有此访问器。 “多”关系always do new select的访问者。但您可以创建添加该访问者的own component。或者只是将方法添加到结果类中。