Rob*_*man 6 perl catalyst dbix-class
我正在使用Catalyst和DBIx :: Class :: Schema :: Loader在Catalyst中创建我的模型,如下所示:
script/myapp_create.pl model DB DBIC::Schema MyApp::Schema create=static overwrite_modifications=1 components=EncodedColumn dbi:mysql:mydb mydb pass
Run Code Online (Sandbox Code Playgroud)
不幸的是,加载器自动设置InflateColumn::DateTime
为默认组件,我不想要.我想要数据库中的原始值.
__PACKAGE__->load_components("InflateColumn::DateTime", "EncodedColumn");
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何防止这种情况?
伙计,这很烦人.看起来不可能得到你想要的东西.
_build_loader_components
在Catalyst :: Helper :: Model :: DBIC :: Schema中添加它,除非您没有名称空间且没有结果集名称空间.它会将您的额外component=
列表推送到该列表上.
my @components = $self->old_schema && (not $use_namespaces) ? ()
: ('InflateColumn::DateTime');
Run Code Online (Sandbox Code Playgroud)
所以,选项 -
这应该是你想要的 -
dbicdump -o dump_directory=./lib \
-o components='["EncodedColumn"]' \
-o use_namespaces=1 \
-o overwrite_modifications=1 \
MyApp::Schema dbi:mysql:foo user pass
Run Code Online (Sandbox Code Playgroud)
然后只是简单的模型来包装它 -
script/myapp_create.pl model DB DBIC::Schema MyApp::Schema
Run Code Online (Sandbox Code Playgroud)
更新:preserve_case
因为您的示例没有使用它,我想提及最佳实践,密码不应该在模型或模式类中.它应该在config中,如果你正在使用允许它的东西,比如mysql,它应该被配置为从特权限制的DB特定配置文件中读取.
归档时间: |
|
查看次数: |
1868 次 |
最近记录: |