以下由Laravel教學專欄為大家介紹laravel之增強Schema資料遷移,希望對需要的朋友有幫助!
構想:
#再重構公司的專案的時候呢,每次建立一個遷移類別新增一個資料表的時候,
都需要指定新增 deleted_at, created_at, updated_at, last_operater, last_operater_id
這五個字段,分別記錄 每一行的 刪除時間,新增時間,修改時間,最後操作人名,最後操作人id,
因此,能不能讓他自動創建這些字段,而無需我自己來手動複製貼上程式碼呢?有時候還忘記了呢! !
然而以下對第二次試驗的解說。
1. 下圖,再app/Facade下新增了一個Schema類別, 定義了兩個獲取mysql的連結的方法,該方法,從容器中獲取db_extra的物件
#2. 接著再app/providers/下新增一個db的伺服器提供者,用來定義$app['db_extra']服務容器是怎麼取得這個物件的
3. 分析下圖二的其中的內容。 ->single 單例實例一個工廠類,用來生產db_extra類的, 如圖三,這個工廠類放到以下圖中
4. 接著分析下這個工廠類,進行繼承系統的生產工廠的類,進行修改其功能, 如這一次,如果是連接的mysql服務連接對象呢,我就讓他實例化我自己定義的msyql連接對象, 如圖4
5. 接下來,再在這個MysqlExtraConnection.php類別中,我重新覆寫父類別的方法,當執行指令新增遷移類別的時候,按照我定義的遷移範本來建立一個遷移檔案
6. 接下來,定義我們自己想預設新增的欄位吧, 如圖6
#7. 接下來,定義一個叫make:app_migration的命令, 注意下面第二張圖 MigrationCreatorExt 依賴注入了自己新增的類,這個類別用來幹嘛的呢?用來輸出字元竄到新增的遷移檔案中,
#8. 有建立模板,修改模板,如下圖
9. 其中在create.stub這個模板呢,我預設讓他呼叫我定義的Schema類,並且註解中備註了,預設增加的字段
10. 大功告成,配置起來有點麻煩,但是確實挺好擴展的, 還有什麼更好的方法嗎,謝謝評論裡討論,嘿嘿
以上是關於laravel之增強Schema資料遷移的詳細內容。更多資訊請關注PHP中文網其他相關文章!