DBIx и произвольный SQL через собственный ResultSource - PullRequest
0 голосов
/ 20 января 2012

У меня возникла проблема с выполнением инструкций в Произвольный SQL через собственный ResultSource , так как он выдал ошибку Can't locate object method "result_source_instance"

К счастью, я нашел решение в этом perlmonk ответе . На самом деле это работает:

package Dir::Dir::ComplexQuery;

use strict;
use warnings;

use base 'DBIx::Class::Core';

__PACKAGE__->table('dummy_table_name');
__PACKAGE__->add_columns(qw/col1 col2 col3/);
__PACKAGE__->result_source_instance->name(\q!(select complex query blah blah ... )! );

и я могу нормально сделать ...->resultset('ComplexQuery')->search();

У меня следующие вопросы:

  1. Функция table - это функции из DBIx::Class::ResultSourceProxy::Table, как описано здесь , верно? Я использую DBIx::Class::Schema::Loader, поэтому я никогда не создавал "таблицу классов" DBIx самостоятельно.
  2. __PACKAGE__->table('table_name') будет не инициировать создание этой таблицы (в данном случае это представление) для фактической БД, верно? Или есть сценарий, где создание представления
  3. В каком пакете DBIx определено result_source_instance? Я искал, но не мог найти - может быть, я не ищу правильный путь.
...