【发布时间】:2017-08-01 01:54:18
【问题描述】:
我正在使用DBIx::Class::Schema::Loader 来创建这样的架构:
#!/usr/bin/perl
use strict;
use warnings;
use DBIx::Class::Schema::Loader qw/make_schema_at/;
make_schema_at(
"Mydb::Schema",
{debug => 0, dump_directory => "../db/",
generate_pod => 0,},
["dbi:mysql:mydb:localhost:3306", 'mydb', 'password'],
);
我在MySQL中的表名是people,但是当我运行这段代码时,生成的类被命名为Mydb::Schema::Result::Person:
$ cat Mydb/Schema/Result/Person.pm
use utf8;
package Mydb::Schema::Result::Person;
# Created by DBIx::Class::Schema::Loader
# DO NOT MODIFY THE FIRST PART OF THIS FILE
use strict;
use warnings;
use base 'DBIx::Class::Core';
__PACKAGE__->table("people");
__PACKAGE__->add_columns(
"pplid",
{
data_type => "smallint",
extra => { unsigned => 1 },
is_auto_increment => 1,
is_nullable => 0,
},
...
...
为什么“人”被转换为“人”?
【问题讨论】:
-
这是您或其他人编写的脚本。它不是 DBIx::Class 的一部分。您可能在那里定义了该映射。
-
@simbabque 脚本所做的就是调用
DBIx::Class::Schema::Loader::make_schema_at。 DBIx::Class 正在这样做,它不是 OP 创建的一些映射。 -
@ThisSuitIsBlackNot 当我写该评论时,代码还没有出现在问题中。我知道复数,但我希望它可以用于不能有单数的单词。
-
值得澄清的是,DBIC 没有更改表的名称。 DBIC 没有对您的数据库做任何事情。 DBIC 正在创建一个基于复数表名的结果集类。
标签: mysql perl dbix-class