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 增加的時間戳。后半段 "create_links_table.php" 是表名字。

2. 編寫邏輯

然后,打開這個遷移類 2017_05_06_151645_create_links_table.php ,里面有兩個方法: up() 和 down() 。up() 方法建表,down() 方法刪表。

<?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 命令優化一下自動加載就可以重新創建遷移了。

 

二、數據填充

可用於測試,為數據庫中的表填充一些數據。

 

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條記錄:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM