一、數據庫遷移
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條記錄:

