要新增資料庫資料前,必須先知道一個重要的功能叫做 migration ,他就像是資料庫的版本控制,你不用再辛苦的在資料庫中建立各種欄位,當你主機換還需要重新設定,這是多麽的麻煩,有了 migration ,只要在檔案內建立一次資料,後續只要下指令就可以幫你完成資料庫欄位建置,這樣是不是節省很多時間啊,那我們快來看看囉
新增migration指令,來建立一個最新消息的資料庫的 migration ,在 table 後面還加有--create的參數,他會而外建立好要開的資料表的名稱和一些相關的程式碼。
//不使用create參數
php artisan make:migration create_news_table
public function up()
{
//
}
public function down()
{
//
}
//使用create參數
php artisan make:migration create_news_table --create=news
public function up()
{
Schema::create('news', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('news');
}
建立成功會像上圖一樣,接著看看檔案在哪裡,database/migrations資料夾的最下面會看到剛剛新增的news檔案,看看上面的程式碼來做說明。
Schema::create 會建立一個新的資料表,後面接著第一個參數是string的資料表名稱,第二個是閉包,接收 Blueprint 物件用來定義新的資料表。
要修改資料表名稱,可使用 rename 方法
Schema::rename($from, $to);
指定特定連線來操作,可使用 Schema::connection 方法:
Schema::connection('foo')->create('users', function($table)
{
$table->increments('id');
});
移除資料表,可使用 Schema::drop 方法,在上面會看到兩個 Function ,up 和 down , up 就是建立 migrateion 的時候會執行 up 裡面的東西,當 rollback 的時候就會執行 down 的 Function
Schema::drop('users');
Schema::dropIfExists('users');
在create的閉包裡面來看看需要怎麼寫程式碼,看到$table的變數,第一行把id設為increments為累加的數字,通常都會把id當作主鍵來使用,因為是唯一值具有索引和一定有值的特性,就可以透過主鍵來查到需要的資料。
在看到第二行timestamps,這行會在資料表裡面建立created_at欄位和updated_at,簡單來講建立資料就會有created_at的時間,更新資料就會有updated_at的時間
Schema::create('news', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});