資料庫遷移 ,聽起來有點抽象 ,沒接觸過的人只聽名字可能不太明白是做什麼的 。先簡單理解 :遷移指的是通過程式設計的方式建立應用程式的資料庫結構( 就是用程式碼來對資料庫中的表 、欄位 、索引等物件進行增刪改查 )
使用 Artisan 命令建立遷移 :
php artisan make:migration create_users_table
新建的遷移檔案在 database/migrations/ 路徑下 ,檔名大概是下面這個樣子 :
2014_10_12_000000_create_users_table.php
遷移檔案的結構如下
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
有兩個方法 up() 和 down() ,下面是對這兩個方法的說明
方法 | 說明 |
---|---|
up() | 這個方法中的內容應該是對資料庫中的物件( 表 、欄位 、索引等 )進行增刪改查等操作 |
down() | 這個方法執行的操作應該與 up() 方法相反 |
建立表
/**
* Schema::create() 方法可以建立表
* @param $table 表的名稱
* @param @callback 閉包 ,在其中對錶進行各種操作
*/
Schema::create('tablename', function(Blueprint $table){
// 設定表使用的儲存引擎
$table->engine = 'InnoDB';
// 設定表使用的字元編碼
$table->collation = 'utf8';
// 設定表的排序規則
$table->collation = 'utf8_unicode_ci';
// 建立臨時表
$table->temporary();
// 設定表的註釋 ,需要外掛( composer require zedisdog/laravel-schema-extend )
$this->comment = '表的註釋資訊';
// 設定表的註釋 ,不需要外掛
\DB::statement("ALTER TABLE `users` comment '表的註釋資訊'");
});
刪除表
public function down()
{
// 刪除表
Schema::drop('users');
// 如果表存在才刪除表
Schema::dropIfExists('users');
}
修改表
public function up()
{
// 修改表名稱
Schema::rename('old_table_name', 'new_table_name');
}
增加欄位
public function up()
{
Schema::table('users', function(Blueprint $table){
// 增加一個 VARCHAR(84) 型別的欄位
$table->string('name', 84);
});
}
刪除欄位
public function down()
{
Schema::table('users', function(Blueprint $table)){
// 刪除 name 欄位
$table->dropColumn('name');
});
}
修改欄位
public function up()
{
// 將 old_column_name 欄位重新命名為 new_column_name
Schema::renameColumn('old_column_name', 'new_column_name');
}
php artisan migrate :執行所有的遷移
遷移檔名稱中的時間欄位
下面是一個遷移檔案的名稱 ,其中的 2014_10_12_000000 是遷移檔案的建立時間
2014_10_12_000000_create_users_table.php
遷移在執行時 ,是按照時間順序執行的 ,up() 命令會抓取最早日期的遷移作為第一個執行 ,然後依次執行後面日期的遷移檔案
建立遷移的選項
下面的命令用來建立遷移
php artisan make:migration create_users_table
有兩個可用的選項
選項 | 說明 |
---|---|
--create | 建立指定名稱的表進行遷移 |
# 建立一個名為 user_table 的表進行遷移
php artisan make:migration create_user_table
# 建立一個名為 abc 的表進行遷移
php artisan make:migration create_user_table --create=abc
# 相同的名稱的遷移檔案不能重複建立 ,這裡是為了方便理解
選項 | 說明 |
---|---|
--table | 這個選項的意思我還不太明白 |
歡迎糾錯 、建議
本作品採用《CC 協議》,轉載必須註明作者和本文連結