【问题标题】:how to define integer size in laravel migration如何在 laravel 迁移中定义整数大小
【发布时间】:2021-07-09 15:32:49
【问题描述】:

当我尝试从 Laravel 迁移数据库时 Scheme Builder。

输入整数类型时,自动输入auto_increment和主键。

我不知道如何在 laravel 中获取创建表。

Schema::create('tbl_corona_region', function(Blueprint $table){
            $table->string('seq', 30);
            $table->date('create_dt');
            $table->string('region_nm', 30);
            $table->string('region_cn', 30);
            $table->string('region_en', 30);
            $table->integer('defCnt', 15)->default(0);
            $table->integer('incDec', 15)->default(0);
            $table->integer('deathCnt', 15)->default(0);
            $table->integer('isolIngCnt', 15)->default(0);
            $table->integer('isolClearCnt', 15)->default(0);
            $table->integer('localOccCnt', 15)->default(0);
            $table->integer('overFlowCnt', 15)->default(0);
            $table->integer('qurRate', 15)->default(0);
            $table->dateTime('stdDay');
            $table->dateTime('update_dt');
            $table->primary(['seq', 'create_dt', 'region_nm']);            
        });

生成此 SQL

create table `tbl_corona_region` (
    `seq` varchar(30) not null, 
    `create_dt` date not null, 
    `region_nm` varchar(30) not null, 
    `region_cn` varchar(30) not null, 
    `region_en` varchar(30) not null, 
    `defCnt` int not null default '0' auto_increment primary key, 
    `incDec` int not null default '0' auto_increment primary key, 
    `deathCnt` int not null default '0' auto_increment primary key, 
    `isolIngCnt` int not null default '0' auto_increment primary key, 
    `isolClearCnt` int not null default '0' auto_increment primary key, 
    `localOccCnt` int not null default '0' auto_increment primary key, 
    `overFlowCnt` int not null default '0' auto_increment primary key, 
    `qurRate` int not null default '0' auto_increment primary key, 
    `stdDay` datetime not null, 
    `update_dt` datetime not null
) default character set utf8mb4 collate 'utf8mb4_unicode_ci')

【问题讨论】:

  • 因为你创建 $table->primary(['seq', 'create_dt', 'region_nm']);
  • 你的意思是 $table->integer('defCnt', 15)->default(0) 会让这个字段自动递增和主要?
  • 不,我只想要默认值 0 而不是整数列上的 AI 和 PK
  • integer 不应该发生这种情况,尽管我不确定是否应该在那里使用第二个参数。你能分享一下你正在使用的 Laravel 版本吗?
  • 直接用sql文本讲述我的计划是创建表'tbl_corona_region' ('seq' varchar(30) not null, 'create_dt' date not null, 'region_nm' varchar(30) not null, 'defCnt' int(15) not null default '0' ..... 主键 ('seq', 'create_dt', 'region_nm') ) ...

标签: php laravel migration


【解决方案1】:

整数中的第二个参数是autoincrement而不是长度。

在laravel数据库迁移中,不能指定整数类型的长度。默认为 11。

整数方法的第二个参数不是指定的长度。而是设置了自增,所以整数方法不能指定子段的长度。

integer(string $column, bool $autoIncrement = false, bool $unsigned =false)

参考:Laravel core implementation of integer method

【讨论】:

    猜你喜欢
    • 2018-01-29
    • 1970-01-01
    • 2018-06-07
    • 2023-03-06
    • 1970-01-01
    • 2017-06-21
    • 2019-03-26
    • 1970-01-01
    • 2020-03-02
    相关资源
    最近更新 更多