• Laravel 生成migration ,boolean字段字段转为tinyInteger


     1         Schema::create('consults', function (Blueprint $table) {
     2             $table->increments('id');
     3             $table->string('sex');
     4             $table->unsignedInteger('birth_year');
     5             $table->string('phone', 150);
     6             $table->string('discomfort')->comment('');
     7             $table->string('disease_condition')->comment('');
     8             $table->string('help')->comment('');
     9             $table->boolean('state')->default(false)->comment('true:已回复; false:待回复');
    10             $table->boolean('is_read')->comment('');
    11             $table->timestamps();
    12 
    13             $table->unsignedInteger('user_id')->nullable();
    14             $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
    15         });

    列类型

    在前面的示例中,我们指定的名称列的类型为"string"。但这是什么意思?数据库中通常没有”string”类型的列。

    请记住,Laravel 试图使您的应用程序独立于底层的数据库;例如,如果你想,你可以使用 MySql 开发并部署到 Postgresql。如果您在迁移中使用 MySql 的列类型,应用到 Postgres 数据库可能无法工作。所以,Laravel 迁移通过使用通用的数据类型使你与底层的数据库类型系统隔离。如果我们要迁移 MySql 数据库, string()方法将创建VARCHAR(255)类型的列。在 Postgres,同一迁移可能会添加CHAR VARYING(255)类型的列 (虽然VARCHAR类型支持所有主要的数据库平台)。

    Laravel 直接支持以下数据类型:

    Laravel 方法

    列的类型

    increments($column)

    向表中添加自动递增的主键

    string($column)

    添加一个VARCHAR(255)列

    string($column, $length)

    添加具有长度的VARCHAR

    integer($column)

    向表中添加一个INTEGER列,

    float($column)

    向表中添加一个FLOAT的列

    decimal($column, $precision, $scale)

    添加一个DECIMAL列的精度和小数位数。精度是总数中数字的位数。规模是小数点的右侧的位数。例如,数 123.45 具有精度为 5 和 2 的小数。从逻辑上讲,规模不能大于精度。

    boolean($column)

    向表中添加一个BOOLEAN的列。注意: 存储布尔值的方式而有所不同从一个数据库到另一个数据库。一些使用"1"和"0"的整数值来表示 true 和 false,个别的,其他人使用"T"和"F"等字符。Laravel 的"boolean"类型映射到数据库的所有系统上的small integer列。Laravel 很好的处理 PHP 的true与false之间的映射,所以你不需要担心。

    text($column)

    相当于表的TEXT

    blob($column)

    相当于表的BLOB

    binary($column)

    相当于表的BINARY

    dateTime($column)

    相当于表DATETIME

    timestamp($column)

    相当于表TIMESTAMP

    date($column)

    相当于表的DATE

    time($column)

    相当于表的TIME

    enum($column, array $allowed)

    在表上创建一个新的ENUM列

    此外,还有几个你需要知道的扩展方法:

    Laravel 方法

    列的类型

    timestamps()

    timestamps()与timestamp()不同。它是一个 Laravel 用来管理创建和修改作为created_at和updated_at TIMESTAMP列的便利方法。他们是 Laravel 可以自己修改的两个特殊的数据库列。created_at列为仅当行被创建时当前时间戳。另一方面, updated_at被修改为每次操作的行的数据时当前时间戳。

    nullable()

    将指定列允许NULL值。默认情况下,Laravel 使在数据库级别需要通过添加NOT NULL约束的列。

    default($value)

    设置要用于新行作为初始值的列的默认值。你永远不需要显式设置的默认值为 null。不设置它默认值就为null。

    unsigned()

    设置INTEGER列为UNSIGNED。

  • 相关阅读:
    POJ 2386 Lake Counting
    POJ 1852 Ants
    HDU 4570 Multi-bit Trie
    HDU 4611 Balls Rearrangement
    ZOJ 3551 Bloodsucker
    HEU 百题解1001 谁是中间的那个
    BNU 1001 北师大ACM新手指导/ICPC introduction(1)
    BOJ 1580 Shoot
    BOJ 1578 Maximum
    BOJ 1577 Easy Game
  • 原文地址:https://www.cnblogs.com/smallyi/p/7699544.html
Copyright © 2020-2023  润新知