数据库迁移教程

2020年12月30日11:27:47 发表评论 47 次浏览

介绍

Laravel提供了一种简单而强大的方法来使用代码创建数据库结构。该方法使你可以在文本文件中定义数据库表和列, 从而可以轻松地根据需要进行编辑和开发。 Laravel还提供了内置的回滚方法, 使你可以根据需要还原任何数据库结构更改。了解有关Laravel数据库迁移以及如何使用它们的更多信息。

要求

  • 安装了Laravel和PHP 7.0+的云服务器。

要安装Laravel, 请按照我们文章中的说明进行操作在Ubuntu 16.04上安装Laravel PHP框架.

总览

对于此项目, 我们将创建一个示例网站, 以介绍餐厅评论。访客将能够使用PHP表单提交餐厅评论, 并查看存储在MySQL数据库中的现有餐厅评论。

mysql -u root -p

创建评论数据库:

创建数据库

首先, 你需要为你的项目创建一个数据库, 并为Laravel使用一个数据库用户。登录到MySQL客户端:

CREATE DATABASE reviews_db;

以下命令将创建一个用户review_site带密码JxSLRkdutW并授予用户访问权限reviews_db数据库:

GRANT ALL ON reviews_db.* to review_site@localhost IDENTIFIED BY 'JxSLRkdutW';

创建Laravel项目

采用su切换到你的Laravel用户:

su - jdoe

转到你的网站目录:

cd /var/www/html

创建Laravel项目:

laravel new reviews

这将创建评论目录。移至该目录:

cd reviews

接下来, 我们将在Laravel环境文件中设置MySQL凭据。打开.env用于编辑的文件:

nano .env

找到以下内容:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

改变DB_DATABASE, DB_USERNAME和DB_PASSWORD包含项目的MySQL数据库名称, 用户名和密码的行:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=reviews_db
DB_USERNAME=review_site
DB_PASSWORD=JxSLRkdutW

保存并退出文件。

创建并运行迁移

Laravel迁移充当数据库的版本控制系统。这使你的团队可以轻松地协作和编辑数据库设计。

使用make:迁移Artisan命令创建名为create_reviews_table。我们还将包括- 创造标志创建表user_reviews:

php artisan make:migration create_reviews_table --create=user_reviews

新的迁移将位于数据库/迁移目录, 并具有包含时间戳的名称:

jdoe@localhost:/var/www/html/reviews$ ll database/migrations
total 20
drwxrwxr-x 2 jdoe jdoe 4096 Oct 26 16:16 ./
drwxrwxr-x 5 jdoe jdoe 4096 Oct 26 16:15 ../
-rw-rw-r-- 1 jdoe jdoe  746 Oct 26 16:15 2014_10_12_000000_create_users_table.php
-rw-rw-r-- 1 jdoe jdoe  683 Oct 26 16:15 2014_10_12_100000_create_password_resets_table.php
-rw-rw-r-- 1 jdoe jdoe  602 Oct 26 16:16 2017_10_26_161616_create_reviews_table.php

每个迁移类都包含两种方法:向上()和下()。的向上()方法将向数据库添加新的体系结构(表, 列, 索引等)。的下()方法将撤消已由向上()方法。

打开数据库迁移文件进行编辑:

nano database/migrations/2017_10_26_161616_create_reviews_table.php

每次迁移都会自动包括自动递增id列, 然后timestamps()列。我们将在表中添加三列:

  • reviewer_name:最多100个字符的字符串。
  • star_rating:一个整数。
  • 细节:一个文本字段。

有关列类型的完整列表, 请参见Laravel官方迁移文件.

找到向上()迁移文件中的"方法"部分:

public function up()
{
    Schema::create('user_reviews', function (Blueprint $table) {
        $table->increments('id');
        $table->timestamps();
    });
}

添加新的列定义, 以便本节显示为:

public function up()
{
    Schema::create('user_reviews', function (Blueprint $table) {
        $table->increments('id');
        $table->timestamps();
        $table->string('reviewer_name', 100);
        $table->integer('star_rating');
        $table->text('details');
    });
}

保存并退出文件。然后运行迁移:

php artisan migrate

如果需要撤消(回滚)迁移, 请使用以下命令:

php artisan migrate:rollback
一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: