隨著服務的成長,我們總是會開始需要使用資料庫的。
跟之前一樣,我們用一個簡單的資料表 quotes
,來儲存我們的名言:
資料表欄位名稱 | 資料欄位內容 |
---|---|
id | 資料 id |
content | 名言內容 |
created_at | 資料建立時間 |
updated_at | 資料編輯時間 |
在之前的文章 [Day 9] 建立資料庫!Laravel 怎麼做資料庫遷移 裡面,由於當時的資料庫版本設置太新,我們建立專案時必須手動調整資料庫的版本。
在今天!我們已經不需要手動調整資料庫的版本了!
Laravel Sail 定義的資料庫版本,位於專案的 docker-compose.yml
檔案內
mysql:
image: 'mysql/mysql-server:8.0'
進到 .env
檔,我們會發現 Laravel 已經幫我們把連線設置成 Laravel Sail 可以使用的環境了
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=ithome_2022_example_app
DB_USERNAME=sail
DB_PASSWORD=password
我們只需要用 sail 幫我們做 migrate 就好
./vendor/bin/sail artisan migrate
INFO Preparing database.
Creating migration table ............................................ 130ms DONE
INFO Running migrations.
2014_10_12_000000_create_users_table ................................. 82ms DONE
2014_10_12_100000_create_password_resets_table ....................... 55ms DONE
2019_08_19_000000_create_failed_jobs_table ........................... 56ms DONE
2019_12_14_000001_create_personal_access_tokens_table ................ 70ms DONE
如果想看到內容的話,直接透過 MySQL 連線工具,如筆者所使用的 Sequel Ace,連線 127.0.0.1
即可看到 ithome_2022_example_app
這個資料庫。
撰寫 migration 的方法跟之前沒有太大差別,參考之前的文章就好。
從 Laravel 8 開始,支援另一種建立資料庫的方式:透過mysql-schema.dump
,如果你在撰寫專案之前,已經有一個使用中的資料庫,像這樣一個檔案整理完所有資料庫架構的方式非常方便!
要從現有連線產生 mysql-schema.dump
非常簡單。只需要透過 schema:dump
這個指令即可
./vendor/bin/sail artisan schema:dump
mysqldump: [Warning] Using a password on the command line interface can be insecure.
INFO Database schema dumped successfully.
建立好之後,即使你沒有一張一張表建立對應的 migration,artisan 也會去找 mysql-schema.dump
這個檔案去建立對應的資料庫架構
./vendor/bin/sail artisan migrate
INFO Preparing database.
Creating migration table ............................................ 122ms DONE
INFO Loading stored database schemas.
database/schema/mysql-schema.dump ................................... 230ms DONE
INFO Nothing to migrate.
比起過去的建立方式,可以說方便太多了!
今天有關資料庫遷移的方式,我們就分享到這邊,各位明天見!