DBIx :: Class базовый класс результата

Я пытаюсь создать модель для Catalyst, используя DBIx :: Class :: Schema :: Loader. Я хочу, чтобы у результирующих классов был базовый класс, к которому я мог бы добавлять методы. Итак, MyTable.pm наследуется от Base.pm, который наследуется от DBIx :: Class :: core (по умолчанию).

Как-то не могу понять, как это сделать. мой сценарий создания ниже, может ли кто-нибудь сказать мне, что я делаю не так? Сценарий создает мою модель нормально, но все классы набора результатов просто наследуются напрямую от DBIx :: Class :: core без моего базового класса между ними.

#!/usr/bin/perl

use DBIx::Class::Schema::Loader qw/ make_schema_at /;

#specifically for the entities many-2-many relation
$ENV{DBIC_OVERWRITE_HELPER_METHODS_OK} = 1;

make_schema_at(
    'MyApp::Schema',
    { 
        dump_directory          => '/tmp',
        debug                   => 1, 
        overwrite_modifications => 1, 
        components              => ['EncodedColumn'],  #encoded password column
        use_namespaces          => 1,
        default_resultset_class => 'Base'

    },
    [ 'DBI:mysql:database=mydb;host=localhost;port=3306','rob', '******' ],
);

person Rob Boerman    schedule 20.03.2011    source источник


Ответы (1)


Похоже, вы просто хотите добавить result_base_class (и, вероятно, отбросить _2 _) -

env DBIC_OVERWRITE_HELPER_METHODS_OK=1 \
   dbicdump \
   -o result_base_class="FullNameOf::Base" \
   -o debug=1 \
   -o dump_directory=./tmp \
   -o components='["EncodedColumn"]' \
   -o use_namespaces=1 \
   -o overwrite_modifications=1 \
   "DBI:mysql:database=mydb;host=localhost;port=3306" \
   rob "******"

Обновление, соответствующий документ: DBIx: : Class :: Schema :: Loader :: Base # result_base_class.

person Ashley    schedule 20.03.2011
comment
Привет, Эсли, спасибо за ответ, я попробовал, но базовый класс по-прежнему остается прежним, т.е. нет наследования моего базового класса: package K2P :: Schema :: Result :: ProductStore; # Создано DBIx :: Class :: Schema :: Loader # НЕ ИЗМЕНЯЙТЕ ПЕРВУЮ ЧАСТЬ ЭТОГО ФАЙЛА use strict; использовать предупреждения; используйте базу DBIx :: Class :: Core; ПАКЕТ - ›load_components (EncodedColumn); ... - person Rob Boerman; 20.03.2011
comment
@Rob: это работает, возможно, это потому, что он не перезаписывает его? Попробуйте это в новом пустом каталоге (удалите -o overwrite_modifications = 1) и посмотрите, что произойдет. Обновите весь свой DBIx :: space? - person Ashley; 20.03.2011