2015-04-25 3 views
0

У меня есть следующие отношения на мой результат ввода класса:Получение связанных данных из объекта Результат

package Schema::Result::Entry; 
__PACKAGE__->has_many(
    "entry_i18ns", 
    "Schema::Result::EntryI18n", 
    { "foreign.entry_id" => "self.id" }, 
    { cascade_copy => 0, cascade_delete => 0 }, 
); 

Так я хочу, чтобы получить соответствующие данные из вновь созданной схемы :: Результат :: Ввод объекта:

$result = $schema->resultset('Result')->create({ entry_i18ns => { title => 'foo', language_code => 'en' } }); 

Проблема заключается в том, что accessor выполняет дополнительный SELECT и возвращает все связанные объекты EntryI18n, а не те, которые были созданы при вызове create().

Насколько я могу видеть, данные мне нужно хранится с $result->{_relationship_data}{entry_i18ns} массива реф, так что я могу получить доступ к нему ти что-то вроде

my $related_data = $result->{_relationship_data}{entry_i18ns}[0]{_column_data}; 

Но как я могу сделать это, не портя с внутренним DBIC частное хранение?

ответ

1

Нет доступа для этого в DBIC. Аксессоры для отношения «multi» always do new select. Но вы можете создать own component, который добавит этот аксессуар. Или просто добавьте метод в класс результата.

Смежные вопросы