一、資料庫遷移
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() 方法刪表。
<?phpuse 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 檔案,添加兩條測試記錄。
<?phpuse 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 檔案內容:
<?phpuse 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條記錄: