Получение связанных данных из объекта Result

У меня есть следующие отношения в моем классе результатов 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 accessor выполняет дополнительный SELECT и возвращает все связанные объекты EntryI18n, а не тот, который был создан с помощью вызова create().

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

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

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

1 ответ

Решение

Нет доступа к этому в DBIC. Средства доступа для "мульти" отношений всегда делают новый выбор. Но вы можете создать собственный компонент, который добавляет этот метод доступа. Или просто добавьте метод в класс результата.

Другие вопросы по тегам