laravel-Schema

鲁烨熠
2023-12-01

laravel-Schema-2020-2-14
门面:

use Illuminate\Support\Facades\Schema; use
Illuminate\Database\Schema\Blueprint; use
Illuminate\Database\Migrations\Migration;

1、数据库

连接和存储引擎

连接不是默认数据库连接,使用connection
连接

 Schema::connection('foo')->create('users', function ($table) {
   $table->increments('id');
 });

存储引擎

Schema::create('users', function ($table) {
    $table->engine = 'InnoDB';
     $table->increments('id');
 });

2、数据表

创建表的方法

 Schema::create($aid, function (Blueprint $aid) {
      $aid->increments('id');
      $aid->string('name');
      });
Schema::create('users', function ($table) {
     $table->increments('id');
 });

查询表是否存在的方法

if (Schema::hasTable('users')) {
    //
}

if (Schema::hasColumn('users', 'email')) {
    //
}

删除表的方法

Schema::drop('users');
Schema::dropIfExists('users');

重命名表的方法

Schema::rename($from, $to);

3、数据列

创建列的方法

Schema::table('users', function ($table) {
    $table->string('email');
 });

还有

1 $table->bigIncrements(‘id’); 自增ID,类型为bigint
2 $table->bigInteger(‘votes’); 等同于数据库中的BIGINT类型
3 $table->binary(‘data’); 等同于数据库中的BLOB类型
4 $table->boolean(‘confirmed’); 等同于数据库中的BOOLEAN类型
5 $table->char(‘name’, 4); 等同于数据库中的CHAR类型
6 $table->date(‘created_at’); 等同于数据库中的DATE类型
7 $table->dateTime(‘created_at’); 等同于数据库中的DATETIME类型
8 $table->dateTimeTz(‘created_at’); 等同于数据库中的DATETIME类型(带时区)
9 $table->decimal(‘amount’, 5, 2); 等同于数据库中的DECIMAL类型,带一个精度和范围
10 $table->double(‘column’, 15, 8); 等同于数据库中的DOUBLE类型,带精度, 总共15位数字,小数点后8位.
11 $table->enum(‘choices’, [‘foo’, ‘bar’]); 等同于数据库中的 ENUM类型
12 $table->float(‘amount’); 等同于数据库中的 FLOAT 类型
13 $table->increments(‘id’); 数据库主键自增ID
14 $table->integer(‘votes’); 等同于数据库中的 INTEGER 类型
15 $table->ipAddress(‘visitor’); 等同于数据库中的 IP 地址
16 $table->json(‘options’); 等同于数据库中的 JSON 类型
17 $table->jsonb(‘options’); 等同于数据库中的 JSONB 类型
18 $table->longText(‘description’); 等同于数据库中的 LONGTEXT 类型
19 $table->macAddress(‘device’); 等同于数据库中的 MAC 地址
20 $table->mediumIncrements(‘id’); 自增ID,类型为无符号的mediumint
21 $table->mediumInteger(‘numbers’); 等同于数据库中的 MEDIUMINT类型
22 $table->mediumText(‘description’); 等同于数据库中的 MEDIUMTEXT类型
23 $table->morphs(‘taggable’); 添加一个 INTEGER类型的 taggable_id 列和一个 STRING类型的 taggable_type列
24 $table->nullableTimestamps(); 和 timestamps()一样但允许 NULL值.
25 $table->rememberToken(); 添加一个 remember_token 列: VARCHAR(100) NULL.
26 $table->smallIncrements(‘id’); 自增ID,类型为无符号的smallint
27 $table->smallInteger(‘votes’); 等同于数据库中的 SMALLINT 类型
28 $table->softDeletes(); 新增一个 deleted_at 列 用于软删除.
29 $table->string(‘email’); 等同于数据库中的 VARCHAR 列 .
30 $table->string(‘name’, 100); 等同于数据库中的 VARCHAR,带一个长度
31 $table->text(‘description’); 等同于数据库中的 TEXT 类型
32 $table->time(‘sunrise’); 等同于数据库中的 TIME类型
33 $table->timeTz(‘sunrise’); 等同于数据库中的 TIME 类型(带时区)
34 $table->tinyInteger(‘numbers’); 等同于数据库中的 TINYINT 类型
35 $table->timestamp(‘added_on’); 等同于数据库中的 TIMESTAMP 类型
36 $table->timestampTz(‘added_on’); 等同于数据库中的 TIMESTAMP 类型(带时区)
37 $table->timestamps(); 添加 created_at 和 updated_at列
38 $table->timestampsTz(); 添加 created_at 和 updated_at列(带时区)
39 $table->unsignedBigInteger(‘votes’); 等同于数据库中无符号的 BIGINT 类型
40 $table->unsignedInteger(‘votes’); 等同于数据库中无符号的 INT 类型
41 $table->unsignedMediumInteger(‘votes’); 等同于数据库中无符号的 MEDIUMINT 类型
42 $table->unsignedSmallInteger(‘votes’); 等同于数据库中无符号的 SMALLINT 类型
43 $table->unsignedTinyInteger(‘votes’); 等同于数据库中无符号的 TINYINT 类型
44 $table->uuid(‘id’); 等同于数据库的UUID

修改列

在修改列之前,确保已经将doctrine/dbal依赖添加到composer.json文件,Doctrine DBAL 库用于判断列的当前状态并创建对列进行指定调整所需的SQL语句:

composer require doctrine/dbal

1>删除列的方法

 Schema::table('users', function ($table) {
      $table->dropColumn('votes'); }); 
 Schema::table('users', function ($table) {
      $table->dropColumn(['votes', 'avatar', 'location']);  });

2>重命名列的方法

 Schema::table('users', function ($table) {
      $table->renameColumn('from', 'to');  });

3>更新列属性

Schema::table('users', function ($table) {
     $table->string('name', 50)->change();
 });
Schema::table('users', function ($table) {
     $table->string('name', 50)->nullable()->change();
 });

4、索引

5、外键约束

 类似资料: