首頁  >  文章  >  php框架  >  關於laravel之增強Schema資料遷移

關於laravel之增強Schema資料遷移

藏色散人
藏色散人轉載
2020-09-01 13:24:401837瀏覽

以下由Laravel教學專欄為大家介紹laravel之增強Schema資料遷移,希望對需要的朋友有幫助!

關於laravel之增強Schema資料遷移

構想:

#再重構公司的專案的時候呢,每次建立一個遷移類別新增一個資料表的時候,
都需要指定新增 deleted_at, created_at, updated_at, last_operater, last_operater_id 
這五個字段,分別記錄 每一行的 刪除時間,新增時間,修改時間,最後操作人名,最後操作人id,

因此,能不能讓他自動創建這些字段,而無需我自己來手動複製貼上程式碼呢?有時候還忘記了呢! !

  • 第一次:進行給Schema增強功能,也就是在原有的建立遷移檔案指令: php artisan make:migration 增強這個功能,但是發現在composer 安裝的laravel-admin的時候呢,很多的遷移文件引發衝突的問題。
  • 第二次:為了解決這個衝突問題,進行第二次試驗:既然不能再原有指令上增強Schema的功能,那麼我們增加一個指令吧php artisan make: app_migration

然而以下對第二次試驗的解說。

1. 下圖,再app/Facade下新增了一個Schema類別, 定義了兩個獲取mysql的連結的方法,該方法,從容器中獲取db_extra的物件

關於laravel之增強Schema資料遷移

#2. 接著再app/providers/下新增一個db的伺服器提供者,用來定義$app['db_extra']服務容器是怎麼取得這個物件的

關於laravel之增強Schema資料遷移

3. 分析下圖二的其中的內容。 ->single 單例實例一個工廠類,用來生產db_extra類的, 如圖三,這個工廠類放到以下圖中

關於laravel之增強Schema資料遷移

4. 接著分析下這個工廠類,進行繼承系統的生產工廠的類,進行修改其功能, 如這一次,如果是連接的mysql服務連接對象呢,我就讓他實例化我自己定義的msyql連接對象, 如圖4

關於laravel之增強Schema資料遷移

 

5. 接下來,再在這個MysqlExtraConnection.php類別中,我重新覆寫父類別的方法,當執行指令新增遷移類別的時候,按照我定義的遷移範本來建立一個遷移檔案

關於laravel之增強Schema資料遷移

6. 接下來,定義我們自己想預設新增的欄位吧, 如圖6

關於laravel之增強Schema資料遷移

關於laravel之增強Schema資料遷移

#7. 接下來,定義一個叫make:app_migration的命令, 注意下面第二張圖 MigrationCreatorExt 依賴注入了自己新增的類,這個類別用來幹嘛的呢?用來輸出字元竄到新增的遷移檔案中,

關於laravel之增強Schema資料遷移

關於laravel之增強Schema資料遷移

#8. 有建立模板,修改模板,如下圖

關於laravel之增強Schema資料遷移

9. 其中在create.stub這個模板呢,我預設讓他呼叫我定義的Schema類,並且註解中備註了,預設增加的字段

關於laravel之增強Schema資料遷移

10. 大功告成,配置起來有點麻煩,但是確實挺好擴展的, 還有什麼更好的方法嗎,謝謝評論裡討論,嘿嘿

以上是關於laravel之增強Schema資料遷移的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除