从 Result 对象中检索相关数据

Retrieving related data from Result object

我的参赛结果有以下关系class:

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 和 returns 所有相关的 EntryI18n 对象,而不是使用 create() 调用创建的特定对象。

据我所知,我需要的数据存储在 $result->{_relationship_data}{entry_i18ns} 数组引用中,因此我可以通过类似

的方式访问它
my $related_data = $result->{_relationship_data}{entry_i18ns}[0]{_column_data};

但是我怎样才能在不弄乱内部 DBIC 私有存储的情况下做到这一点?

DBIC 中没有此访问器。添加该访问器的“多”关系 always do new select. But you can create own component 的访问器。或者只是将方法添加到结果 class.