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