laravel的migration

2025-03-05 17

《laravel的migration》

一、解决方案简述

在Laravel项目中,当我们需要对数据库结构进行修改时,使用migration(迁移)是一种非常有效且规范的解决方案。它允许我们以一种可追踪、可回滚的方式对数据库表结构进行创建、修改或删除等操作,而不需要直接在数据库中手动编写复杂的SQL语句。

二、创建数据表迁移

1. 创建迁移文件

要创建一个新的数据表迁移,可以使用Artisan命令。例如我们要创建一个名为“users”的数据表:
php
php artisan make:migration create_users_table --create=users

这会在database/migrations目录下生成一个类似20230915123456createuserstable.php的文件。在这个文件中,我们可以定义表结构。
```php
<?php

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;

class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('emailverifiedat')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::dropIfExists('users');
}

}
``
其中
up方法用于定义创建表的操作,down`方法用于定义回滚操作,这里就是删除表。

三、修改现有数据表

1. 添加字段

如果要给已有的“users”表添加一个“age”字段,可以创建新的迁移文件:
php
php artisan make:migration add_age_to_users_table --table=users

然后在生成的迁移文件中:
```php
<?php

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;

class AddAgeToUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->integer('age')->nullable();
});
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropColumn('age');
    });
}

}
```

2. 修改字段类型

若想将“age”字段从整型改为字符串类型,可以创建如下迁移文件:
php
php artisan make:migration change_age_type_in_users_table --table=users

并在文件中写入:
```php
<?php

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;

class ChangeAgeTypeInUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('age')->nullable()->change();
});
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::table('users', function (Blueprint $table) {
        $table->integer('age')->nullable()->change();
    });
}

}
```

要执行这些迁移操作,可以在终端运行php artisan migrate来应用所有未执行的迁移,或者使用php artisan migrate:rollback来回滚最后一次迁移操作。通过这种方式,可以方便地管理数据库结构变更,确保项目的数据库结构始终保持清晰和可控。

Image

(www.nzw6.com)

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载