前言

当前项目使用的laravel框架版本是5.0,为了能使用5.1中权限管理的便利功能,考虑将框架升级到5.1。
升级到5.1一方面是因为5.1是第一个LTS版本,能获得长时间的支持;另一方面不升级最新版本的5.3是因为5.3目录结构较大,先升级到比较稳妥的5.1版本。

准备

官方文件的升级步骤
修改 composer.json 文件

“laravel/framework": “5.0.*"
修改为
“laravel/framework": “5.1.*"
修改 bootstrap/autoload.php 中的 $compiledPath 变量
如下

$compiledPath = __DIR__.'/cache/compiled.php';

在 bootstrap 里面建立目录 cache
在 cache 目录中放入一个 .gitignore 文件
并输入内容如下

*
!.gitignore

另外有两个目录结构变动
app/Command => app/Jobs
app/Handlers => app/Listeners
执行更新,mposer update

遇到的坑

验证登录

因为之前项目使用的是系统自带的验证登录模块,并根据项目要求修改了不少地方,甚至修改了源码。所以导致升级以后,登录验证功能直接报废,表现是使用自带的attempt功能完全无法验证,无论什么账号都失败。
无奈,为了让系统和源代码解耦,只能自己重写验证登录模块,也为后续升级框架打好基础。
重写验证登录过程中,发现原来是因为之前密码是用md5保存的,所以没法使用自带的密码验证来进行验证。这时候,有两种办法来解决,第一种是自己重写hash模块,并将更改HashServiceProvider为自定的HashServiceProvider,具体参考这里
第二种是完全手动验证,具体可以参考这里。我为了偷懒,选择了第二种方式(¬_¬)

数据库查询问题

更新之前通过orm来获取的数据时可以正常更新的,但更新后就出现下面的异常
\1.png
简单分析一下,可能是因为模型里面没有指明主键是什么(主键并没有采用默认的id),在对应的模型添加对应的$primaryKey,问题解决。
上面问题出现的原因,其实是因为更改了Model里面的配置,即更改了源码,所以升级以后就出现了问题。因此以后一定要将配置具体到每个model里面,千万别修改源码,否则升级以后又要跪。


参考网站


Laravel

登陆发表评论