gpt4 book ai didi

mysql - 为什么 DBIx::Class::Schema::Loader 将我的表名从复数更改为单数?

转载 作者:行者123 更新时间:2023-11-29 01:36:17 26 4
gpt4 key购买 nike

我正在使用 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,
},
...
...

为什么“people”要转换为“Person”?

最佳答案

默认情况下,DBIx::Class::Schema::Loader 将结果类的名称单数化。有一个人的数据库表是有意义的,但是有一个对象代表一个叫做“人”的人是没有意义的。

如果你真的想要,你可以通过设置 naming 来改变它。 make_schema_at 中的选项:

make_schema_at(
"Mydb::Schema",
{
debug => 0,
dump_directory => "../db/",
generate_pod => 0,
naming => { monikers => 'preserve' }
},
["dbi:mysql:mydb:localhost:3306", 'mydb', 'password'],
);

但我建议坚持使用默认值。

关于mysql - 为什么 DBIx::Class::Schema::Loader 将我的表名从复数更改为单数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42723147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com