从Result对象中检索相关数据

时间:2015-04-25 08:35:45

标签: perl dbix-class

我的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私有存储的情况下做到这一点?

1 个答案:

答案 0 :(得分:1)

在DBIC中没有此访问器。 “多”关系always do new select的访问者。但您可以创建添加该访问者的own component。或者只是将方法添加到结果类中。