您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關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. 大功告成,配置起來有點麻煩,但是確實挺好擴展的, 還有什么更好的方法嗎,謝謝評論里討論,嘿嘿
關于“laravel之增強Schema數據遷移的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。