首页 > 代码库 > Laravel 5.2 数据库迁移和数据填充

Laravel 5.2 数据库迁移和数据填充

一、数据库迁移

Laravel 的数据库迁移提供了对数据库、表、字段、索引的一系列相关操作。

 

1. 创建迁移

使用 Artisan 命令  php artisan make:migration create_links_table 

这将在 database/migrations 目录下生成一个名为 2017_05_06_151645_create_links_table.php 的友情链接迁移类。其中,名字的前半段 "2017_05_06_151645_" 是 Laravel 增加的时间戳。

2. 编写逻辑

为迁移类的 up() 和 down() 方法编写操作数据表的代码。

2017_05_06_151645_create_links_table.php 文件内容:

<?php

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

class CreateLinksTable extends Migration
{
    /**
     * 执行迁移
     *
     * @return void
     */
    public function up()
    {
        Schema::create(‘links‘, function (Blueprint $table){
            $table->engine = ‘MyISAM‘;
            $table->increments(‘id‘);
            $table->string(‘name‘)->default(‘‘)->comment(‘名称‘);
            $table->string(‘title‘)->default(‘‘)->comment(‘标题‘);
            $table->string(‘url‘)->default(‘‘)->comment(‘地址‘);
            $table->integer(‘sort‘)->default(50)->comment(‘排序‘);
        });
    }
    
    /**
     * 回滚迁移
     *
     * @return void
     */
    public function down()
    {
        Schema::drop(‘links‘);
    }
}

2017_05_06_151645_create_links_table.php

3. 执行迁移

使用 Artisan 命令  php artisan migrate 

现在,数据库中已经创建了一张 hd_links 表 和 一张记录迁移的表 hd_migrations ("hd_" 是配置的表前缀):

技术分享

注意:如果手动删除了迁移类文件,使用 composer dump-autoload 命令优化一下自动加载就可以重新 make:migration 了。

 

二、数据填充

可用于测试,为数据库中的表填充一些数据。

 

1. 创建填充

使用 Artisan 命令   php artisan make:seeder LinksTableSeeder 

这将在 database/seeds 目录下生成一个名为 LinksTableSeeder.php 的友情链接填充类。

2. 编写逻辑

 LinksTableSeeder.php 文件内容:

<?php

use Illuminate\Database\Seeder;

class LinksTableSeeder extends Seeder
{
    /**
     * 运行数据库填充
     *
     * @return void
     */
    public function run()
    {
        $data = [
            [
                ‘name‘ => ‘Laravel 中文社区‘,
                ‘title‘ => ‘Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 - Powered by PHPHub‘,
                ‘url‘ => ‘https://laravel-china.org/‘,
                ‘sort‘ => ‘49‘
            ],
            [
                ‘name‘ => ‘GitHub‘,
                ‘title‘ => ‘GitHub is where people build software. More than 21 million people use...‘,
                ‘url‘ => ‘https://github.com‘,
                ‘sort‘ => ‘49‘
            ]
        ];

        DB::table(‘links‘)->insert($data);
    }
}

3. 调用填充

在 database/seeds 目录下的 DatabaseSeeder.php 这个数据库填充类中,在 run() 方法内调用填充。

DatabaseSeeder.php 文件内容:

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * 运行数据库填充
     *
     * @return void
     */
    public function run()
    {
        $this->call(LinksTableSeeder::class);
    }
}

4.执行填充

使用 Artisan 命令  php artisan db:seed 

现在,数据库中的 hd_links 表就有了2条记录:

技术分享

 

Laravel 5.2 数据库迁移和数据填充