📜  laravel 迁移列类型 json - PHP (1)

📅  最后修改于: 2023-12-03 15:32:36.559000             🧑  作者: Mango

Laravel 迁移列类型 JSON

Laravel 是一个流行的现代 PHP 框架,提供了许多实用的功能和工具,其中包括数据库迁移。Laravel 迁移是一个用于管理数据库 schema 的工具,它使得在多人协作和版本迭代时,对数据库 schema 进行更新更加方便。

JSON 是一种常见的数据格式,它支持复杂的数据结构和嵌套,非常适合存储半结构化数据。在 Laravel 中,我们可以使用 JSON 列来存储 JSON 类型的数据。下面我们将介绍如何在 Laravel 迁移中创建 JSON 列。

迁移文件创建

要创建一个迁移文件,在 Laravel 中,可以使用 make:migration Artisan 命令创建一个新的迁移文件。以下是创建名为 create_users_table 迁移文件的命令:

php artisan make:migration create_users_table --create=users
定义 JSON 列

要创建一个 JSON 列,我们需要在迁移文件中调用 json 方法。以下是一个示例:

<?php

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

class CreateUsersTable extends Migration
{
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->json('metadata');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('users');
    }
}

在上面的示例中,我们创建了一个名为 metadata 的 JSON 列。

运行迁移

创建好迁移文件后,我们需要运行迁移才能将改变应用到数据库中。在 Laravel 中,可以使用 migrate Artisan 命令运行迁移。以下是示例命令:

php artisan migrate

运行成功后,将会在数据库中创建一个名为 users 的表,其中包含 namemetadata 两个列。

修改 JSON 列

如果需要修改 JSON 列,我们可以使用 change 方法。以下是修改 metadata 列的长度和说明的示例:

Schema::table('users', function (Blueprint $table) {
    $table->json('metadata')
        ->nullable()
        ->after('name')
        ->comment('用户元数据JSON');
});

在上面的示例中,我们使用 nullable 方法将列设为可空,使用 comment 方法为列添加了一个说明文本,并使用 after 方法将该列放置在 name 列之后。

总结

在 Laravel 中,使用 JSON 列来存储 JSON 类型的数据非常方便。我们可以使用 json 方法创建该列,并使用 migrate Artisan 命令将更改应用到数据库。如果需要修改 JSON 列,可以使用 change 方法设置需要的选项。