技术学习 怎么用Laravel迁移来创建和修改数据库表?

怎么用Laravel迁移来创建和修改数据库表?

209
 

在Laravel中,迁移(Migration)是一种数据库版本控制系统,它允许你通过编写PHP代码来创建和修改数据库表,而不必直接操作数据库。下面是使用Laravel迁移来创建和修改数据库表的基本步骤:

1. 创建迁移文件:

使用Artisan命令行工具创建一个新的迁移文件,你可以在迁移文件中定义数据库表的结构。打开终端(命令行),然后执行以下命令:

php artisan make:migration create_example_table

这会在database/migrations目录下创建一个新的迁移文件,文件名类似YYYY_MM_DD_HHMMSS_create_example_table.php,其中YYYY_MM_DD_HHMMSS表示当前的时间戳。

2. 编辑迁移文件:

打开新创建的迁移文件,在up方法中定义要创建的数据库表结构。例如,你可以使用Schema类的方法来创建表:

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

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

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

在上面的示例中,我们创建了一个名为example的数据库表,它包含一个自增的主键id、一个字符串类型的字段name和默认的时间戳created_atupdated_at

3. 运行迁移:

在编辑完迁移文件后,运行迁移以执行数据库表的创建操作。在终端中运行以下命令:

php artisan migrate

这将会执行up方法中定义的数据库操作,并在数据库中创建新的表。

4. 修改数据库表结构:

如果需要修改数据库表结构,可以创建一个新的迁移文件。例如,要向example表中添加一个新的字段,可以执行以下命令创建一个新的迁移文件:

php artisan make:migration add_column_to_example_table

然后在新创建的迁移文件中,使用Schema类的方法来修改表结构:

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

class AddColumnToExampleTable extends Migration
{
    public function up()
    {
        Schema::table('example', function (Blueprint $table) {
            $table->string('new_column')->after('name');
        });
    }

    public function down()
    {
        Schema::table('example', function (Blueprint $table) {
            $table->dropColumn('new_column');
        });
    }
}

在上面的示例中,我们向example表中添加了一个名为new_column的新字段。

5. 再次运行迁移:

编辑完新的迁移文件后,再次运行迁移命令来执行修改操作:

php artisan migrate

这将会执行up方法中定义的修改操作,并更新数据库表的结构。

通过这些步骤,你可以使用Laravel的迁移功能来创建和修改数据库表,而无需直接操作数据库。这种方法使得数据库结构的管理更加方便和可控。


更新:2024-03-11 21:39:34 © 著作权归作者所有
QQ
微信