iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 8
0
Software Development

30天快速上手Laravel系列 第 8

Day8-[Laravel 的安裝與架設] Migration schema part2

  • 分享至 

  • xImage
  •  

檔案說明

前面那個是一個基本的 migration schema,以前面的檔案來舉例其他時候可能會需要修改的地方

1. 用timestamps代表的意義

    Schema::create('products', function (Blueprint $table) {
        //底下是DB的欄位定義
        $table->increments('id');
        $table->string('name');
        $table->timestamps(); //代表created_at 和 updated_at
    });

2. 使用不同的 DB需要加connection(up & down)

這邊的connection 裡面的值是參考config/database.php 裡面 Database Connections 設定的值,預設是mysql,所以如果有開其他的DB就會需要另外在 config/database.php 裡面設定

public function up()
{
    Schema::connection('mysql_log')->create('products', function (Blueprint $table) {
      //...
    }
}

public function down()
{
    Schema::connection('mysql_log')->drop('products');
}

config/database.php

'mysql' => [
  'driver' => 'mysql',
  'host' => env('DB_HOST', '127.0.0.1'),
  'port' => env('DB_PORT', '3306'),
  'database' => env('DB_DATABASE', 'forge'),
  //...
],
'mysql_log' => [
  'driver' => 'mysql',
  'host' => env('DB_HOST', '127.0.0.1'),
  'port' => env('DB_PORT', '3306'),
  'database' => env('DB_DATABASE_LOG', 'forge'),
   //...
],

.env.example

DB_DATABASE=homestead
DB_DATABASE_LOG=homestead

3. 使用soft delete

Schema::create('products', function (Blueprint $table) {
    //...
    $table->timestamps();
    $table->softDeletes();
});

使用到對應Model檔案的部分也要記得加上使用SoftDelete

小補充

如果是已經存在tables的情況下(例如v1 repo的schema 要搬移到v2),可以使用以下這個工具: migrations-generator,簡單來說,只要加入composer.json update以後,跑底下的指令就可以反建立migration schema[從DB建立schema,不用手動寫]
細節可參考上面文件,或是網路影片教學


結論:php artisan migrate 在規模還不大需要快速開發時方便建立與維護,不過動到DB的話就要小心,有一些細節需要注意,最好還是在測試機測試過沒問題以後再上正式環境。

參考連結:


上一篇
Day7-[Laravel 的安裝與架設] Migration schema part1
下一篇
Day9-[Laravel 資料夾目錄與內容] 應用程式(資料夾)目錄
系列文
30天快速上手Laravel30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言