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的對象

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. 大功告成,配置起來有點麻煩,但是確實挺好擴展的, 還有什麼更好的方法嗎,謝謝評論裏討論,嘿嘿

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章