前言
當(dāng)前項(xiàng)目使用的laravel框架版本是5.0持际,為了能使用5.1中權(quán)限管理的便利功能,考慮將框架升級(jí)到5.1。
升級(jí)到5.1一方面是因?yàn)?.1是第一個(gè)LTS版本熄阻,能獲得長(zhǎng)時(shí)間的支持;另一方面不升級(jí)最新版本的5.3是因?yàn)?.3目錄結(jié)構(gòu)較大倔约,先升級(jí)到比較穩(wěn)妥的5.1版本秃殉。
準(zhǔn)備
官方文件的升級(jí)步驟
修改 composer.json 文件
將
“l(fā)aravel/framework": “5.0."
修改為
“l(fā)aravel/framework": “5.1."
修改 bootstrap/autoload.php 中的 $compiledPath 變量
如下
$compiledPath = __DIR__.'/cache/compiled.php';
在 bootstrap 里面建立目錄 cache
在 cache 目錄中放入一個(gè) .gitignore 文件
并輸入內(nèi)容如下
*
!.gitignore
另外有兩個(gè)目錄結(jié)構(gòu)變動(dòng)
app/Command => app/Jobs
app/Handlers => app/Listeners
執(zhí)行更新,mposer update
遇到的坑
驗(yàn)證登錄
因?yàn)橹绊?xiàng)目使用的是系統(tǒng)自帶的驗(yàn)證登錄模塊,并根據(jù)項(xiàng)目要求修改了不少地方钾军,甚至修改了源碼鳄袍。所以導(dǎo)致升級(jí)以后,登錄驗(yàn)證功能直接報(bào)廢吏恭,表現(xiàn)是使用自帶的attempt功能完全無法驗(yàn)證拗小,無論什么賬號(hào)都失敗。
無奈樱哼,為了讓系統(tǒng)和源代碼解耦哀九,只能自己重寫驗(yàn)證登錄模塊,也為后續(xù)升級(jí)框架打好基礎(chǔ)搅幅。
重寫驗(yàn)證登錄過程中阅束,發(fā)現(xiàn)原來是因?yàn)橹懊艽a是用md5保存的,所以沒法使用自帶的密碼驗(yàn)證來進(jìn)行驗(yàn)證盏筐。這時(shí)候围俘,有兩種辦法來解決,第一種是自己重寫hash模塊琢融,并將更改HashServiceProvider為自定的HashServiceProvider界牡,具體參考這里。
第二種是完全手動(dòng)驗(yàn)證漾抬,具體可以參考這里宿亡。我為了偷懶,選擇了第二種方式(¬_¬)
數(shù)據(jù)庫查詢問題
更新之前通過orm來獲取的數(shù)據(jù)時(shí)可以正常更新的纳令,但更新后就出現(xiàn)下面的異常

簡(jiǎn)單分析一下挽荠,可能是因?yàn)槟P屠锩鏇]有指明主鍵是什么(主鍵并沒有采用默認(rèn)的id),在對(duì)應(yīng)的模型添加對(duì)應(yīng)的$primaryKey平绩,問題解決圈匆。
上面問題出現(xiàn)的原因,其實(shí)是因?yàn)楦牧薓odel里面的配置捏雌,即更改了源碼跃赚,所以升級(jí)以后就出現(xiàn)了問題。因此以后一定要將配置具體到每個(gè)model里面性湿,千萬別修改源碼纬傲,否則升級(jí)以后又要跪。
參考網(wǎng)站