我被分配了一个旧的Laravel项目(版本5.0)。第一项任务是将Laravel从版本5.0 升级到最新的版本7.x (截至今天)。
从Laravel文档中,我发现这将需要一个痛苦的漫长过程!我知道有一项名为 Laravel Shift 的付费服务,因为这是一个巨大的版本转移,将涉及一笔不菲的费用。因此,Laravel Shift对我来说不是一个选择。
我可以安装最新版本的Laravel,并从旧版本中复制并粘贴所有MVC文件吗?有没有人做过这种方法并立即成功?
谢谢。
答案 0 :(得分:5)
首先,让我们将php 升级到至少7.2.5,以下命令适用于7.4
sudo apt-get update
sudo apt -y install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt -y install php7.4
sudo apt-get install -y php7.4-{bcmath,bz2,intl,gd,mbstring,mysql,zip,xml,curl,json}
php -v
sudo update-alternatives --set php /usr/bin/php7.4
sudo a2enmod php7.4
sudo systemctl restart apache2
要进行验证,请检查{url} /phpinfo.php
第二,删除 composer.lock 文件和供应商文件夹rm -R vendor
。
运行composer install
。
第三,这就是一切的地狱! 升级后代码更改
1)具有方法
$ request-> has方法现在将返回true,即使输入值为空字符串或null。添加了新的$ request-> filled方法,该方法提供has方法的先前行为。
例如
array:1 [
"class_teachers" => null
]
$request->has('class_teachers')
true
$request->filled('class_teachers')
false
2)。从html页面标题中删除html特殊字符。
3)嵌套三元运算
必须明确使用括号来指示操作顺序。
1 ? 2 : 3 ? 4 : 5; // deprecated
(1 ? 2 : 3) ? 4 : 5; // ok
1 ? 2 : (3 ? 4 : 5); // ok
4)或运算符
Blade的“ or”运算符已被删除,以支持PHP的内置??。 “空合并”运算符
$user->name or "-" --> $user->name ?? "-"
5)输入外观
'Input' => Illuminate\Support\Facades\Input::class, --> 'Input' => Illuminate\Support\Facades\Request::class,
6)不建议使用带有花括号的数组和字符串偏移量访问语法
$str = "test";
echo $str{0}; // deprecated
echo $str[0]; // ok
7)withCount列格式
使用别名时,withCount方法将不再自动将_count附加到结果列名称上。
8)记录
现在,所有日志记录配置都位于其自己的config / logging.php配置文件中。您应该将默认配置文件的副本放置在自己的应用程序中,然后根据应用程序的需要调整设置。
log和log_level配置选项可以从config / app.php配置文件中删除。
use Illuminate\Support\Facades\Log;
Log::info('Showing user profile for user: '.$id);
9)排队
QUEUE_DRIVER 环境变量已重命名为QUEUE_CONNECTION 。除非您有意修改config / queue.php配置文件,否则这不会影响要升级的现有应用程序。并将默认的QUEUE_CONNECTION更改为数据库
还更改.env文件(非常重要)
10)以秒为单位的TTL
// Laravel 5.7 - Store item for 30 minutes...
Cache::put('foo', 'bar', 30);
// Laravel 5.8 - Store item for 30 seconds...
Cache::put('foo', 'bar', 30);
11)碳2.0
Laravel现在支持Carbon 1和Carbon 2;因此,如果未检测到与任何其他软件包的其他兼容性问题,Composer将尝试升级到Carbon 2.0。请查看migration guide for Carbon 2.0。
12)whereDate方法
查询构建器的whereDate方法现在将DateTime实例转换为Y-m-d格式:
// previous behaviour - SELECT * FROM `table` WHERE `created_at` > '2018-08-01 13:00:00'
$query->whereDate('created_at', '>', Carbon::parse('2018-08-01 13:00:00'));
// current behaviour - SELECT * FROM `table` WHERE `created_at` > '2018-08-01'
$query->whereDate('created_at', '>', Carbon::parse('2018-08-01 13:00:00'));
。
。
。
也可以有更多。这是升级项目时必须要做的事情。请通过migration guide
至少,我希望我能给您一个开端。祝你好运!