溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

laravel之增強Schema數(shù)據(jù)遷移的示例分析

發(fā)布時間:2021-03-11 12:43:30 來源:億速云 閱讀:124 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關laravel之增強Schema數(shù)據(jù)遷移的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

再重構(gòu)公司的項目的時候呢,每次創(chuàng)建一個遷移類新增一個數(shù)據(jù)表的時候,
都需要指定新增 deleted_at, created_at, updated_at, last_operater, last_operater_id
這五個字段,分別記錄著 每一行的 刪除時間,新增時間,修改時間,最后操作人名,最后操作人id,

因此,能不能讓他自動創(chuàng)建這些字段,而無需我自己來手動復制粘貼代碼呢?有時候還忘記了呢?。?/p>

  • 第一次:進行給Schema增強功能,也就是在原有的 創(chuàng)建遷移文件命令: php artisan make:migration 增強這個功能,但是發(fā)現(xiàn)在composer 安裝的 laravel-admin的時候呢,很多的遷移文件 引發(fā)沖突的問題。


  • 第二次:為了解決這個沖突問題,進行第二次試驗:既然不能再原有命令上增強Schema的功能,那么我們增加一個命令吧php artisan make:app_migration

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

1. 下圖,再 app/Facade下新增了一個Schema類, 定義了兩個 獲取mysql的鏈接的方法,該方法,從容器中獲取db_extra的對象

laravel之增強Schema數(shù)據(jù)遷移的示例分析

2. 接著 再 app/providers/下新增一個db的服務器提供者,用于定義 $app['db_extra']服務容器 是怎么獲取這個對象的

laravel之增強Schema數(shù)據(jù)遷移的示例分析

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

laravel之增強Schema數(shù)據(jù)遷移的示例分析

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

laravel之增強Schema數(shù)據(jù)遷移的示例分析

5. 接下來,再這個MysqlExtraConnection.php類中,我重新覆蓋父類的方法,當執(zhí)行命令新增遷移類的時候,按照我定義的遷移模板來創(chuàng)建一個遷移文件

laravel之增強Schema數(shù)據(jù)遷移的示例分析

6. 接下來,定義我們自己想默認新增的字段吧, 如圖6

laravel之增強Schema數(shù)據(jù)遷移的示例分析

laravel之增強Schema數(shù)據(jù)遷移的示例分析

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

laravel之增強Schema數(shù)據(jù)遷移的示例分析

laravel之增強Schema數(shù)據(jù)遷移的示例分析

8. 有創(chuàng)建模板,修改模板,如下圖

laravel之增強Schema數(shù)據(jù)遷移的示例分析

9. 其中在create.stub這個模板呢,我默認讓他調(diào)用我定義的Schema類,并且 注釋中備注了,默認增加的字段

laravel之增強Schema數(shù)據(jù)遷移的示例分析

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

關于“l(fā)aravel之增強Schema數(shù)據(jù)遷移的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI