Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > [DBIx::Class] Отношения many_to_many и prefetch


Автор: Vaneska 29.11.2010, 17:39
Привет всем!

Проблема в следующем.
Есть 3 таблицы. Например, articles, article_tags, tags.
Код

package MyDB::Result::Article;

__PACKAGE__->has_many('article_tags' => 'MyDB::Result::ArticleTag', 'article_id');
__PACKAGE__->many_to_many('tags' => 'article_tags', 'tag');

package MyDB::Result::Tag;

__PACKAGE__->has_many('tag_articles' => 'MyDB::Result::ArticleTag', 'tag_id');
__PACKAGE__->many_to_many('articles' => 'tag_articles', 'article');

package MyDB::Result::ArticleTag;

__PACKAGE__->belongs_to('article' => 'MyDB::Result::Article', 'article_id');
__PACKAGE__->belongs_to('tag' => 'MyDB::Result::Tag', 'tag_id');


package main;

use MyDB;

my $scheme = MyDB->connect();

#  выбираем все статьи и заодно для каждой статьи подгружаем теги.
$articles = $scheme->resultset('Article')->search(undef, {
    prefetch => 'tags'
});

# берем первую статью и получаем ее теги
$article->next->tags;


По идее все должно работать. Но почему-то появляется ошибка:
No such relationship tags on Article

Смотрел дамп (Dumper($articles)). Для Article действительно нет такой связи.
Но если делать без prefetch, то все работает.
Может какая хитрость есть или я что-то не так делаю?


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)