前面那個是一個基本的 migration schema,以前面的檔案來舉例其他時候可能會需要修改的地方
Schema::create('products', function (Blueprint $table) {
//底下是DB的欄位定義
$table->increments('id');
$table->string('name');
$table->timestamps(); //代表created_at 和 updated_at
});
這邊的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
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的話就要小心,有一些細節需要注意,最好還是在測試機測試過沒問題以後再上正式環境。
參考連結: