簡體   English   中英

為什么DBIx :: Class :: Schema :: Loader將我的表名從復數更改為單數?

[英]Why does DBIx::Class::Schema::Loader change my table name from plural to singular?

我正在使用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 :: Schema :: Loader將Result類的名稱單數化。 擁有一個人的數據庫表是有意義的,但是擁有一個代表一個人的對象稱為“人”是沒有意義的。

如果確實需要,可以通過在make_schema_at設置naming選項來更改此設置:

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

但我建議您堅持使用默認值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM