引言php
使用laravel的數據庫遷移功能進行表的建立,和遷移回滾以後,咱們繼續說說在設計中 表結構的更改以後的處理。以及如何爲數據庫填充一些僞數據做爲測試。laravel
數據約束程序員
上一章說到數據庫遷移回滾,能夠手動控制回滾到哪一批次的遷移位置。好比咱們建立的 events 表, 若是在遷移文件內添加字段,代碼以下:數據庫
咱們在數據庫表中間的位置添加了一個 venue 字段。而後使用遷移指令編程
php artisan migrate
就能夠應用這些改變了。微信
不少時候,並非說咱們建立了表,而且指定了字段名,和字段數據類型就算完事兒了。咱們須要空與非空約束,默認值約束,主鍵約束,外鍵約束等等數據庫所具備的特性, 這纔是關係型數據庫的魅力。app
好比聲明一個布爾類型的值,並聲明默認爲false:測試
$table - > boolean ( 'confirmed' ) - > default ( false ) ;
好比設定一個字符串類型的字段,容許爲null:spa
$table - > string ( 'comments' ) - > nullable ( ) ;
好比設定整型爲無符號數:.net
$table - > tinyInteger ( 'age' ) - > unsigned ( ) ;
在給上面的 age 字段設定默認值:
$table - > tinyInteger ( 'age' ) - > unsigned ( ) - > default ( 0 ) ;
增刪字段
使用遷移功能增刪數據庫表的字段,與以前講的建立遷移文件相同, 首先建立一個遷移文件,使用如下腳手架指令:
php artisan make : migration add_enabled_to_events_table -- table = events
本遷移文件咱們要爲表 events 添加一個 enabled 的布爾類型的字段。上述指令輸出內容以下:
Created Migration : 2020 _09_28_213116_add_enabled_to_events_table
如今爲該遷移文件添加 up & down 方法,指定遷移開始和回滾所要執行的動做, 咱們僅僅是添加一個字段,或者在回滾的時候,刪除一個字段,代碼以下圖:
完成後在命令行執行遷移指令:
php artisan migrate
輸出結果以下:
Migrating : 2020 _09_28_213116_add_enabled_to_events_table
Migrated : 2020 _09_28_213116_add_enabled_to_events_table
上面咱們並無指定添加的字段在哪一個字段的後面,因此laravel所組裝的SQL就默認是最後一個字段以後。你們應該不陌生SQL語句追加字段的語法:
ALTER TABLE contacts ADD last_name varchar ( 40 ) NOT NULL AFTER contact_id ;
laravel的遷移指令也容許咱們指定某個追加的字段位於某個列以後:
$table - > boolean ( 'enabled' ) - > after ( 'name' ) ;
遷移狀態
查看當前數據庫的遷移狀態,會讓咱們查看建立的遷移文件中哪些被應用了, 哪些尚未被應用,這樣在數據庫表比較多的狀況下,能夠有效地排查問題。
laravel提供了腳手架命令:
php artisan migrate : status
輸出內容相似下圖:
還有兩個高危指令,一個是 magrate:reset 回滾全部的遷移,不一樣於 migrate:rollback 僅回滾某一批次的遷移;還有一個是 migrate:refresh,若是你修改了某些遷移過的文件,這個指令會刷新全部修改的變動並應用。
這兩個都要慎用!
寫在最後
本文是對上一章所述laravel數據庫遷移功能的補充。數據庫遷移是一個比較大的動做, 特別是已經上線生產的應用數據庫,若是非到更新遷移的地步不可,須要預期作好演練, 以應對可能的突發事故。
Happy coding :-)
我是@程序員小助手,專一編程知識,圈子動態的IT領域原創做者
本文分享自微信公衆號 - 程序員小助手(mql45ea)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。