下面由Laravel教程欄目給大家介紹laravel之增強Schema數(shù)據(jù)遷移,希望對需要的朋友有所幫助!
十年的隆回網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整隆回建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“隆回網(wǎng)站設(shè)計”,“隆回網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。構(gòu)想:
再重構(gòu)公司的項目的時候呢,每次創(chuàng)建一個遷移類新增一個數(shù)據(jù)表的時候,
都需要指定新增 deleted_at, created_at, updated_at, last_operater, last_operater_id
這五個字段,分別記錄著 每一行的 刪除時間,新增時間,修改時間,最后操作人名,最后操作人id,
因此,能不能讓他自動創(chuàng)建這些字段,而無需我自己來手動復(fù)制粘貼代碼呢?有時候還忘記了呢??!
第一次:進(jìn)行給Schema增強功能,也就是在原有的 創(chuàng)建遷移文件命令: php artisan make:migration 增強這個功能,但是發(fā)現(xiàn)在composer 安裝的 laravel-admin的時候呢,很多的遷移文件 引發(fā)沖突的問題。第二次:為了解決這個沖突問題,進(jìn)行第二次試驗:既然不能再原有命令上增強Schema的功能,那么我們增加一個命令吧php artisan make:app_migration然而 以下對 第二次試驗的解說。
1. 下圖,再 app/Facade下新增了一個Schema類, 定義了兩個 獲取mysql的鏈接的方法,該方法,從容器中獲取db_extra的對象
2. 接著 再 app/providers/下新增一個db的服務(wù)器提供者,用于定義 $app['db_extra']服務(wù)容器 是怎么獲取這個對象的
3. 分析下圖二的其中的內(nèi)容。->single 單例實例一個 工廠類,用來生產(chǎn)db_extra類的, 如圖三,這個工廠類放到以下圖中
4. 接著分析下 這個工廠類,進(jìn)行繼承系統(tǒng)的生產(chǎn)工廠的類,進(jìn)行修改其功能, 如這一次,如果是連接的mysql服務(wù)連接對象呢,我就讓他實例化我自己定義的msyql連接對象, 如圖4
5. 接下來,再這個MysqlExtraConnection.php類中,我重新覆蓋父類的方法,當(dāng)執(zhí)行命令新增遷移類的時候,按照我定義的遷移模板來創(chuàng)建一個遷移文件
6. 接下來,定義我們自己想默認(rèn)新增的字段吧, 如圖6
7. 接下來,定義一個叫 make:app_migration的命令, 注意下面第二張圖 MigrationCreatorExt 依賴注入了自己新增的類,這個類用來干嘛的呢?用來輸出字符竄到 新增的遷移文件中,
8. 有創(chuàng)建模板,修改模板,如下圖
9. 其中在create.stub這個模板呢,我默認(rèn)讓他調(diào)用我定義的Schema類,并且 注釋中備注了,默認(rèn)增加的字段
10. 大功告成,配置起來有點麻煩,但是確實挺好擴展的, 還有什么更好的方法嗎,謝謝評論里討論,嘿嘿
文章名稱:關(guān)于laravel之增強Schema數(shù)據(jù)遷移
網(wǎng)頁地址:http://weahome.cn/article/cpidjo.html