【问题标题】:DBIx::Class base result classDBIx::Class 基结果类
【发布时间】:2011-07-19 01:16:13
【问题描述】:

我正在尝试使用 DBIx::Class::Schema::Loader 为 Catalyst 创建模型。我希望结果类有一个可以添加方法的基类。所以 MyTable.pm 继承自 Base.pm 继承自 DBIx::Class::core(默认)。

不知何故,我无法弄清楚如何做到这一点。我的创建脚本在下面,谁能告诉我我做错了什么?该脚本可以创建我的模型,但所有结果集类都直接从 DBIx::Class::core 继承,而没有我的 Base 类。

#!/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', '******' ],
);

【问题讨论】:

    标签: mysql perl catalyst dbix-class


    【解决方案1】:

    看起来您只想添加result_base_class(并且可能删除default_resultset_class)–

    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

    【讨论】:

    • 嗨,Asley,感谢您的回答,我试过了,但基类仍然保持不变,即没有继承我的基类:package K2P::Schema::Result::ProductStore; # 由 DBIx::Class::Schema::Loader 创建 # 不要修改此文件的第一部分 use strict;使用警告;使用基础'DBIx::Class::Core'; PACKAGE->load_components("EncodedColumn"); ...
    • @Rob:这确实有效,所以也许是因为它没有覆盖它?在一个新的空目录中尝试(删除 -o overwrite_modifications=1),看看会发生什么。升级所有 DBIx:: 空间?
    猜你喜欢
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 2012-02-15
    • 2014-03-30
    • 2011-07-09
    • 2016-08-25
    相关资源
    最近更新 更多