【问题标题】:Laravel migration boolean field created in Db like tiny integerLaravel 迁移布尔字段在 Db 中创建,如小整数
【发布时间】:2023-03-06 19:40:02
【问题描述】:

我在 Laravel 中写了一个迁移:

 Schema::create('test', function (Blueprint $table) {
        //
        $table->increments('id');
        $table->string('city','30')->unique();
        $table->string('car','30')->unique();
        $table->boolean('required');
        $table->string('street','100')->nullable();
        $table->json('files');
        $table->timestamp('created_at');
    });

所需的字段定义为布尔值,但在 db (MySql) 中创建为 tinyint。怎么可能?

【问题讨论】:

标签: php laravel laravel-migrations


【解决方案1】:

Tinyint 与boolean 相同。 Tinyint 是一个大小等于 1 个八位字节的整数。当创建列集为boolean 时,db 将其创建为大小为1 bit 的 tinyint。从而使其成为可能的值01,即boolean


来自 MySQL 文档

BOOL, BOOLEAN

这些类型是TINYINT(1) 的同义词。 zero 的值被视为 false。非零值被认为是true

Numeric Type Overview

【讨论】:

  • 本题与mysql无关。和laravel迁移有关
  • 还有一个问题是TINYINT(1)的大小不是1 bit而是1 byte!只有BIT(1) 真正大小为1 bit
  • 不是连1个字节都没有吗?但是类似“如果您将其导出为与大型机兼容的格式,这将打印为 1 个字符”。例如。修剪到最后一个十进制字符:0 到 9。在正常查询期间您不会看到。
猜你喜欢
  • 2018-06-07
  • 1970-01-01
  • 2022-09-30
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
  • 2019-03-20
  • 2021-06-30
  • 2021-02-16
相关资源
最近更新 更多