More Related Content
Similar to Schema & Migration操作 (18)
More from Shengyou Fan (20)
Schema & Migration操作
- 2. 階段任務
• 學習常用 artisan 指令
• 學習建立 migration
• 學習使用 Schema Builder 建立資料庫結構
• 透過 artisan 指令執行資料庫結構的變更
- 4. 什麼是 artisan?
• Laravel 專屬的指令列工具,協助我們完成
日常繁瑣工作事務,如:
- 產生 migration、dump auto-load
- 清快取、最佳化、控制 queue
- 互動模式、維護模式
- 6. 如何使用 artisan?
• $ php artisan {指令名稱}
• 工作坊截至目前為主,已經使用過的有:
- env
- migrate:install
• 在接下來的各單元內,將依不同主題介紹
更多 artisan 指令
- 7. artisan env
• 測試 Laravel 目前所在環境
- artisan 會回傳目前 Laravel 目前的環境變
數設定
• 範例:
$
php
artisan
env
- 9. artisan key:generate
• 產生 App 加密金鑰
- 若使用 composer 建立專案的話,則會
自動執行 個指令
• 範例:
$
php
artisan
key:generate
Application
key
[xxxxxxxxxxxxxxxxxx]
set
successfully
- 12. 什麼是 Migration?
• 所有對 DB 操作的動作,都 寫對應的程
式碼,透過執行程式來操作資料庫變更
• 每個人拿到更新版本後,透過執行
migrate 就可以有相同的 DB 結構,若有問
題也可以 rollback 回之前的狀態
• 可以把它當成資料庫的版本控制系統
- 15. 怎麼做 Migration?
• 先用 artisan 產生 migration
• 使用 Laravel Schema Builder 類別 寫
migration 的內容
• 使用 artisan 執行 migrate
• 可從 phpMyAdmin 裡確認執行後的結果
- 17. artisan migrate:make
• 產生 migration
- artisan 原生指令,依照給予的 migration
名稱,產生 migration ,並執行 dump-
autoload
• 範例:
$
php
artisan
migrate:make
create_posts_table
- 19. artisan generate:migration
• 產生 migration
- generator 版的產生 migration 指令,優
點在於透過 migration 名的保留字,預
先產生 Schema Builder 語法
• 範例:
$
php
artisan
generate:migration
create_posts_table
- 20. Migration 案結構
• 分成 up / down (前進/後退)
- up 寫要做變更的內容 (新增、刪除、
重新命名)
- down 是寫如何將 up 的內容做還原 (刪
除、新增、重新命名)
★ 參考:http://laravel.tw/docs/migrations
- 22. Schema Builder 語法
• 建立資料表
• 重新命名資料表
• 刪除資料表
Schema::create('users',
function($table)
{
$table-‐>increments('id');
});
Schema::rename($from,
$to);
Schema::drop('users');
★ 語法參考:http://laravel.tw/docs/4.2/schema#creating-and-dropping-tables
- 23. Schema Builder 語法
• 建立欄位
• 重新命名欄位
• 刪除欄位
Schema::table('users',
function($table)
{
$table-‐>string('email');
});
Schema::table('users',
function($table)
{
$table-‐>renameColumn('from',
'to');
});
Schema::table('users',
function($table)
{
$table-‐>dropColumn('votes');
});
(要額外安裝
doctrine/dbal
套件)
★ 語法參考:http://laravel.tw/docs/4.2/schema#adding-columns
- 24. Schema Builder 語法
• 增加 index
• after 語法
★ 語法參考:http://laravel.tw/docs/4.2/schema#adding-indexes
$table-‐>string('email')-‐>unique();
$table-‐>string('name')-‐>after('email');
- 26. artisan migrate
• 呼叫 artisan 執行 migrate 動作
- 寫完 migrate 後,要執行此指令才
會正式修改資料庫
- artisan 會自動依照 migrations 資料表的
紀錄進行版本控管
• 範例:
$
php
artisan
migrate
- 28. 其他 migrate 指令
• 還原
• 回到最初
• 回到最初後再重 一次
$
php
artisan
migrate:rollback
$
php
artisan
migrate:reset
$
php
artisan
migrate:refresh
- 29. 小技巧
• 在輸入 migration 名稱時打錯字怎麼辦?
- 先 rollback,重新命名 Class 名稱及 案
名稱,再執行 dump-autoload 及 migrate
指令
- 把產生出來的 案手動刪除掉、資料庫
內資料表 掉,再重新產生一次
- 30. 小技巧
• 不小心把 migration 資料表弄壞、弄亂無
法復原時怎麼辦?
- 試試 php artisan migrate:reset
- 把所有資料表全部手動刪除,再重新
一次 php artisan migrate 重建所有資料表
- 32. 階段檢查表
• 確認產生出 3 個 migration
• 確認 DB 裡目前有 4 個資料表,分別為:
migrations、posts、categories、comments
- 34. 單元小結
• 在 個單元裡,我們說明如何使用 Laravel
的 Migration 功能為資料庫做版本控制,
並將 Blog 所需要的有個資料表建立完成
• 下一個單元,我們將學習如何使用 Laravel
的 Seeding 功能,協助我們產生資料庫內
的測試資料