2015-01-16 6 views
1

Я использую DBIx :: Class для моей базы данных MySQL. У меня есть много похожих классов результатов, созданных путем подкласса из родительской схемы с использованием Helper :: Row :: SubClass. Можно ли включить более одного класса результатов в один и тот же файл .pm? Если да, пожалуйста, предложите, как это сделать.Класс DBIX - Несколько классов результатов в одном файле

+1

Зачем вам требуется несколько классов в одном файле? –

+0

Для 15-20 базовых классов мне нужно создать около 30 подклассов каждого класса. Каждый подкласс класса отличается только двумя символами, где я должен предоставить идентификатор клиента функции подкласса. – bvnbhati

+0

Итак, у каждого клиента есть своя таблица в базе данных с идентификатором клиента как часть имени таблицы? Это похоже на то, что вы хотите создать, используя файл шаблона и цикл или два. –

ответ

0

Всегда можно поместить несколько пакетов в один и тот же файл.

package MyApp::Schema::Result::Foo; 

# Stuff 

package MyApp::Schema::Result::Bar; 

# Other Stuff 

1; 

Это редко бывает хорошей идеей.

+0

Я знаю, что это возможно в соответствии с Perl, но я не очень хорошо знаю DBIx :: Class внутри, а классы результатов не загружаются, если имя класса не совпадает с именем файла. Ошибка: «DBIx :: Class :: Schema :: source(): Не удается найти источник для " – bvnbhati

0

Если у вас есть класс результата в файле, который не соответствует имени класса или файлу с несколькими классами результатов, вам необходимо зарегистрировать классы результатов вручную, используя register_class. Так что в вашем классе схемы, добавьте:

__PACKAGE__->register_class(Foo => 'MyApp::Schema::Result::Foo'); 
__PACKAGE__->register_class(Bar => 'MyApp::Schema::Result::Bar'); 

Также убедитесь, что файл, содержащий несколько классов Resultset находится за пределами любого каталога, найденного load_namespcaes или load_classes и use файл вручную.