将 Laravel 5.0 升级到最新版本(7.x)

2024-02-05

我被分配了一个旧的 Laravel 项目(版本 5.0)。第一个任务是将 Laravel 从5.0版本到最新的版本 7.x(截至今日)。

从 Laravel 文档中,我发现这将需要一个痛苦的漫长过程!我知道有一项付费服务​​叫做Laravel 转变,这将涉及相当大的资金,因为这是巨大的版本跳跃。所以,Laravel Shift 不适合我。

我可以安装最新版本的 Laravel吗?复制并粘贴所有 MVC 文件从旧版本?有谁用过这个方法并且马上成功的吗?

Thanks.


First, let's 升级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

Second, 消除作曲家.lock文件 &vendor folder rm -R vendor. Run composer install.

Third,这就是一切都走向地狱的地方!升级后代码变化

1)has方法
即使输入值为空字符串或 null,$request->has 方法现在也会返回 true。添加了新的 $request->filled 方法,该方法提供了 has 方法的先前行为。
e.g.

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“或”运算符已被删除,取而代之的是 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
The 队列驱动程序环境变量已重命名为 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.0Laravel 现在支持 Carbon 1 和 Carbon 2;因此,如果没有检测到与任何其他软件包的兼容性问题,Composer 将尝试升级到 Carbon 2.0。请查看Carbon 2.0 迁移指南 https://carbon.nesbot.com/docs/#api-carbon-2.


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'));

.
.
.
还可以有更多。这是我升级项目时必须做的事情。请通过迁移指南 https://laravel.com/docs/7.x/upgrade

至少,我希望,我能够给你一个良好的开端。祝你好运!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Laravel 5.0 升级到最新版本(7.x) 的相关文章

  • 使用操作系统用户名/密码在 PHP 中进行身份验证?

    我想知道是否有一种方法可以使用 PHP 或者可能是其他一些 CGI 但最好是 PHP 来使用其操作系统 在本例中为 Linux Debian 5 用户名和密码来验证用户 可能的 难的 谢谢 一般来说 这种东西是特定于操作系统的 并与现有的身
  • PHP DateTime::修改加减月份

    我一直在与DateTime class http www php net manual en class datetime php最近在添加月份时遇到了我认为是一个错误 经过一番研究后 看来这不是一个错误 而是按预期工作 根据查到的文档he
  • 创建动态子域

    自从我考虑一些网站正在实施的此功能以来已经有一段时间了 它看起来非常成功 类似的网站tumblr com blogger com wordpress com允许用户使用简单的 HTML PHP 表单从网站内注册新的子域名 以我目前对 PHP
  • 图像上的文字

    是否可以在 php 中动态地将文本放置在图像上 然后将其发送到 rss feed 是的 可以使用GD http www php net gd函数或图像魔术师 http www php net imagemagick功能 具体取决于您的服务器
  • PHP和.htaccess认证解决方案

    这是布局 web root admin dir index php js img other files dirs dir files 到目前为止 我使用 htaccess passwd 保护管理目录 因为我希望对该目录中的所有文件 包括
  • $_COOKIE[] 设置后似乎没有反映更改

    我不记得过去使用 Cookie 时遇到过很多问题 但我在尝试时遇到了一些意想不到的结果 我在本地主机上运行 因此我的域设置 这将产生以下输出 Cookie Set Cookie equals 457718770 shou
  • Laravel 资源策略始终为 false

    我试图允许用户在 Laravel 5 4 中查看自己的个人资料 用户策略 php public function view User authUser user return true 在 AuthServiceProvider php 中
  • mPDF 临时文件不可使用 Yii 写入

    我尝试打印 PDF 格式的证书 但是当我将代码推送到暂存阶段时 它说 Temporary files directory var www protected vendor mpdf mpdf src Config tmp is not wr
  • 如何动态创建新属性

    如何从对象方法内的给定参数创建属性 class Foo public function createProperty var name val here how can I create a property named var name
  • OOP 中的静态和动态变量/方法是什么?

    我试图更好地理解 OOP 中的基本概念 面向对象编程中的静态和动态变量和方法是什么 例如 使用 this 与使用双冒号 之间有什么区别 this this gt a method 优点 缺点 这个 不是自我记录的 如下所示 this gt
  • 我们在哪里/什么时候使用 JSON?

    你能告诉我 JSON 有什么用 在 Javascript 和 PHP 中 当我们需要 JSON 方法时 我从以下链接中阅读 但是 我没有获得有关任何项目的 JSON 实现的任何信息 http www json org js html htt
  • iPhone表情插入MySQL却变成空值

    我们正在开发一个 iPhone 应用程序 它将表情符号从 iPhone 发送到服务器端 PHP 并插入到 MySQL 表中 我正在做服务器端的工作 但是insert语句执行成功后 插入的值变成空了 我可以正确插入字段 varchar 的是文
  • 如何找到 httpd.conf 文件所在的位置?

    如何找到 apache PHP 上 httpd conf 文件的路径 我不知道我的脚本是否会在Windows apache或Linux中运行 我需要知道在哪里可以找到这个文件 以便从那里找到参数 谢谢 我认为它没有接触 PHP 跑步http
  • 单击文件下载后,成功后使用 AJAX 重定向到另一个页面

    In my WordPress project my Download button containing a zip file which onClick should be downloaded So the HTML producin
  • Laravel:如何设置多对多关系的连接?

    我有模型 class User extends Model protected connection mysql public function areas return this gt belongsToMany Area class u
  • JQuery 验证不起作用

    我有一种表单 其中一个输入类型的值为 名字 但这可以在 onfocus 函数上更改我想验证此输入字段 如果它为空白或 名字 我有两个 jQuery 文件jquery 1 4 2 min js jquery validate pack js
  • 在 PHP 中创建关联数组

    我有一个多维数组 shop array array appn1 pub1 pub2 pub3 array appn2 pub1 array appn3 pub1 pub2 每个数组中的第一项是申请编号每个数组中的其余部分是出版号 我得到每个
  • ZF2 - 从路线生成 URL

    我无法弄清楚在 zend 2 中从我想要的任何地方生成 Url 我得到了动作和控制器 所以我尝试这个 this gt url myControllerName array action gt myActionName 但这返回一个对象 我只
  • 未加载 Firebird 扩展

    我正在尝试在 PHP 中使用 Firebird 扩展 我有扩展文件 php pdo firebird dll php interbase dll in my ext文件夹 我将它们添加到我的php ini像这样文件 PHP PDO FIRE
  • 我应该写什么来从 CI 中的控制器重定向页面?

    这是我的控制器

随机推荐