发布说明
支持政策
对于 LTS 版本,如 Laravel 5.1,提供 2 年的错误修复和 3 年的安全修复。这些版本提供最长的支持和维护窗口。
对于一般版本,提供 6 个月的错误修复和 1 年的安全修复。
Laravel 5.2
Laravel 5.2 继续改进了 Laravel 5.1,增加了多重认证驱动支持、隐式模型绑定、简化的 Eloquent 全局作用域、可选的认证脚手架、中间件组、限流中间件、数组验证改进等。
认证驱动 / "多重认证"
在之前的 Laravel 版本中,默认情况下只支持基于会话的认证驱动,且每个应用程序不能有多个可认证的模型实例。
然而,在 Laravel 5.2 中,你可以定义额外的认证驱动以及多个可认证的模型或用户表,并分别控制它们的认证过程。例如,如果你的应用程序有一个用于“管理员”用户的数据库表和一个用于“学生”用户的数据库表,你现在可以使用 Auth
方法分别对这些表进行认证。
认证脚手架
Laravel 已经让后端的认证处理变得简单;然而,Laravel 5.2 提供了一种方便、快速的方式来为前端生成认证视图。只需在终端中执行 make:auth
命令:
php artisan make:auth
此命令将生成简单的、与 Bootstrap 兼容的用户登录、注册和密码重置视图。该命令还会更新你的路由文件以包含适当的路由。
此功能仅用于新应用程序,而不是在应用程序升级期间使用。
隐式模型绑定
隐式模型绑定使得在路由和控制器中直接注入相关模型变得轻而易举。例如,假设你有如下定义的路由:
use App\User;
Route::get('/user/{user}', function (User $user) {
return $user;
});
在 Laravel 5.1 中,你通常需要使用 Route::model
方法来指示 Laravel 注入与路由定义中的 {user}
参数匹配的 App\User
实例。然而,在 Laravel 5.2 中,框架将自动根据 URI 段注入此模型,使你能够快速访问所需的模型实例。
当路由参数段({user}
)与路由闭包或控制器方法的相应变量名($user
)匹配且变量是 Eloquent 模型类的类型提示时,Laravel 将自动注入模型。
中间件组
中间件组允许你将多个路由中间件分组到一个方便的键下,从而可以一次性将多个中间件分配给一个路由。例如,这在构建一个 Web UI 和一个 API 的同一应用程序时非常有用。你可以将会话和 CSRF 路由分组到一个 web
组中,可能将限流器分组到 api
组中。
事实上,默认的 Laravel 5.2 应用程序结构正是采用了这种方法。例如,在默认的 App\Http\Kernel.php
文件中,你会发现以下内容:
/**
* 应用程序的路由中间件组。
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],
'api' => [
'throttle:60,1',
],
];
然后,可以像这样将 web
组分配给路由:
Route::group(['middleware' => ['web']], function () {
//
});
然而,请记住,web
中间件组已经默认应用于你的路由,因为 RouteServiceProvider
在默认中间件组中包含了它。
限流
框架现在包含一个新的限流中间件,允许你轻松限制给定 IP 地址在指定分钟数内对路由的请求次数。例如,要限制单个 IP 地址每分钟对路由的 60 次请求,你可以这样做:
Route::get('/api/users', ['middleware' => 'throttle:60,1', function () {
//
}]);
数组验证
在 Laravel 5.2 中,验证数组表单输入字段变得更加容易。例如,要验证给定数组输入字段中的每个电子邮件都是唯一的,你可以这样做:
$validator = Validator::make($request->all(), [
'person.*.email' => 'email|unique:users'
]);
同样,你可以在语言文件中指定验证消息时使用 *
字符,这使得为基于数组的字段使用单个验证消息变得轻而易举:
'custom' => [
'person.*.email' => [
'unique' => '每个人必须有一个唯一的电子邮件地址',
]
],
Bail 验证规则
添加了一个新的 bail
验证规则,该规则指示验证器在给定规则的第一次验证失败后停止验证。例如,你现在可以在属性未通过 integer
检查时阻止验证器运行 unique
检查:
$this->validate($request, [
'user_id' => 'bail|integer|unique:users'
]);
Eloquent 全局作用域改进
在之前的 Laravel 版本中,全局 Eloquent 作用域的实现复杂且容易出错;然而,在 Laravel 5.2 中,全局查询作用域只需要你实现一个简单的方法:apply
。
有关编写全局作用域的更多信息,请查看完整的 Eloquent 文档。
Laravel 5.1.11
Laravel 5.1.11 引入了开箱即用的授权支持!使用简单的回调或策略类方便地组织应用程序的授权逻辑,并使用简单、富有表现力的方法授权操作。
有关更多信息,请参阅授权文档。
Laravel 5.1.4
Laravel 5.1.4 向框架引入了简单的登录限流。有关更多信息,请查阅认证文档。
Laravel 5.1
Laravel 5.1 通过采用 PSR-2 并添加事件广播、中间件参数、Artisan 改进等,继续改进了 Laravel 5.0。
PHP 5.5.9+
由于 PHP 5.4 将在 9 月进入“生命终止”状态,并且不再从 PHP 开发团队获得安全更新,Laravel 5.1 需要 PHP 5.5.9 或更高版本。PHP 5.5.9 允许与最新版本的流行 PHP 库(如 Guzzle 和 AWS SDK)兼容。
LTS
Laravel 5.1 是第一个获得长期支持的 Laravel 版本。Laravel 5.1 将获得 2 年的错误修复和 3 年的安全修复。这个支持窗口是 Laravel 有史以来提供的最长的,为更大的企业客户和客户提供了稳定性和安心。
PSR-2
PSR-2 编码风格指南 已被采用为 Laravel 框架的默认风格指南。此外,所有生成器都已更新为生成符合 PSR-2 的语法。
文档
Laravel 文档的每一页都经过了细致的审查和显著的改进。所有代码示例也经过了审查和扩展,以提供更多的相关性和上下文。
事件广播
在许多现代 Web 应用程序中,Web 套接字用于实现实时、实时更新的用户界面。当服务器上的某些数据更新时,通常会通过 Web 套接字连接发送一条消息以由客户端处理。
为了帮助你构建这些类型的应用程序,Laravel 使“广播”你的事件变得容易。广播你的 Laravel 事件允许你在服务器端代码和客户端 JavaScript 框架之间共享相同的事件名称。
要了解有关事件广播的更多信息,请查看事件文档。
中间件参数
中间件现在可以接收额外的自定义参数。例如,如果你的应用程序需要在执行给定操作之前验证经过身份验证的用户是否具有给定“角色”,你可以创建一个 RoleMiddleware
,该中间件接收角色名称作为附加参数:
<?php
namespace App\Http\Middleware;
use Closure;
class RoleMiddleware
{
/**
* 运行请求过滤器。
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string $role
* @return mixed
*/
public function handle($request, Closure $next, $role)
{
if (! $request->user()->hasRole($role)) {
// 重定向...
}
return $next($request);
}
}
在定义路由时可以通过用 :
分隔中间件名称和参数来指定中间件参数。多个参数应以逗号分隔:
Route::put('post/{id}', ['middleware' => 'role:editor', function ($id) {
//
}]);
有关中间件的更多信息,请查看中间件文档。
测试大修
Laravel 的内置测试功能得到了显著改进。各种新方法提供了一种流畅、富有表现力的接口,用于与应用程序交互并检查其响应。例如,查看以下测试:
public function testNewUserRegistration()
{
$this->visit('/register')
->type('Taylor', 'name')
->check('terms')
->press('Register')
->seePageIs('/dashboard');
}
有关测试的更多信息,请查看测试文档。
模型工厂
Laravel 现在附带了一种简单的方法来使用模型工厂创建存根 Eloquent 模型。模型工厂允许你轻松定义 Eloquent 模型的“默认”属性集,然后为你的测试或数据库种子生成测试模型实例。模型工厂还利用强大的 Faker PHP 库来生成随机属性数据:
$factory->define(App\User::class, function ($faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => str_random(10),
'remember_token' => str_random(10),
];
});
有关模型工厂的更多信息,请查看文档。
Artisan 改进
Artisan 命令现在可以使用简单的、类似路由的“签名”来定义,这为定义命令行参数和选项提供了一个极其简单的接口。例如,你可以像这样定义一个简单的命令及其选项:
/**
* 控制台命令的名称和签名。
*
* @var string
*/
protected $signature = 'email:send {user} {--force}';
有关定义 Artisan 命令的更多信息,请查阅Artisan 文档。
文件夹结构
为了更好地表达意图,app/Commands
目录已重命名为 app/Jobs
。此外,app/Handlers
目录已合并为一个简单包含事件监听器的 app/Listeners
目录。然而,这不是一个破坏性更改,你不需要更新到新的文件夹结构即可使用 Laravel 5.1。
加密
在之前的 Laravel 版本中,加密是由 mcrypt
PHP 扩展处理的。然而,从 Laravel 5.1 开始,加密由 openssl
扩展处理,该扩展维护得更为积极。
Laravel 5.0
Laravel 5.0 为默认的 Laravel 项目引入了一个全新的应用程序结构。这个新结构为在 Laravel 中构建一个强大的应用程序提供了更好的基础,并在整个应用程序中采用了新的自动加载标准(PSR-4)。首先,让我们来看看一些主要的更改:
新的文件夹结构
旧的 app/models
目录已被完全移除。相反,所有代码都直接位于 app
文件夹中,并且默认情况下组织到 App
命名空间中。可以使用新的 app:name
Artisan 命令快速更改此默认命名空间。
控制器、中间件和请求(Laravel 5.0 中的新类类型)现在被分组在 app/Http
目录下,因为它们都是与应用程序的 HTTP 传输层相关的类。所有中间件现在都分解为各自的类文件,而不是单个、平面的路由过滤器文件。
新的 app/Providers
目录取代了 Laravel 4.x 版本中的 app/start
文件。这些服务提供者为你的应用程序提供各种引导功能,如错误处理、日志记录、路由加载等。当然,你可以为你的应用程序创建额外的服务提供者。
应用程序语言文件和视图已移至 resources
目录。
合同
所有主要的 Laravel 组件都实现了位于 illuminate/contracts
仓库中的接口。这个仓库没有外部依赖。拥有一个方便的、集中定位的接口集,你可以用于解耦和依赖注入,将作为 Laravel Facades 的一个简单替代选项。
有关合同的更多信息,请查阅完整文档。
路由缓存
如果你的应用程序完全由控制器路由组成,你可以利用新的 route:cache
Artisan 命令来大幅加快路由的注册速度。这主要在具有 100 多个路由的应用程序中有用,并将大幅加快应用程序的这一部分。
路由中间件
除了 Laravel 4 风格的路由“过滤器”外,Laravel 5 现在支持 HTTP 中间件,并且包含的认证和 CSRF“过滤器”已转换为中间件。中间件提供了一种单一、一致的接口来替换所有类型的过滤器,允许你在请求进入应用程序之前轻松检查,甚至拒绝请求。
有关中间件的更多信息,请查看文档。
控制器方法注入
除了现有的构造函数注入外,你现在可以在控制器方法上进行依赖注入。即使路由包含其他参数,服务容器也会自动注入依赖项:
public function createPost(Request $request, PostRepository $posts)
{
//
}
认证脚手架
用户注册、认证和密码重置控制器现在开箱即用,并附带简单的相应视图,这些视图位于 resources/views/auth
。此外,框架中包含了一个“用户”表迁移。包括这些简单的资源可以快速开发应用程序想法,而不会在认证样板代码上陷入困境。认证视图可以在 auth/login
和 auth/register
路由上访问。App\Services\Auth\Registrar
服务负责用户验证和创建。
事件对象
你现在可以将事件定义为对象,而不仅仅是使用字符串。例如,查看以下事件:
<?php
class PodcastWasPurchased
{
public $podcast;
public function __construct(Podcast $podcast)
{
$this->podcast = $podcast;
}
}
事件可以像往常一样调度:
Event::fire(new PodcastWasPurchased($podcast));
当然,你的事件处理程序将接收事件对象,而不是数据列表:
<?php
class ReportPodcastPurchase
{
public function handle(PodcastWasPurchased $event)
{
//
}
}
有关使用事件的更多信息,请查看完整文档。
命令 / 队列
除了 Laravel 4 支持的队列作业格式外,Laravel 5 允许你将队列作业表示为简单的命令对象。这些命令位于 app/Commands
目录中。以下是一个示例命令:
<?php
class PurchasePodcast extends Command implements SelfHandling, ShouldBeQueued
{
use SerializesModels;
protected $user, $podcast;
/**
* 创建一个新的命令实例。
*
* @return void
*/
public function __construct(User $user, Podcast $podcast)
{
$this->user = $user;
$this->podcast = $podcast;
}
/**
* 执行命令。
*
* @return void
*/
public function handle()
{
// 处理购买播客的逻辑...
event(new PodcastWasPurchased($this->user, $this->podcast));
}
}
基本的 Laravel 控制器利用了新的 DispatchesCommands
trait,允许你轻松调度命令以执行:
$this->dispatch(new PurchasePodcastCommand($user, $podcast));
当然,你也可以将命令用于同步执行的任务(不排队)。事实上,使用命令是封装应用程序需要执行的复杂任务的好方法。有关更多信息,请查看命令总线文档。
数据库队列
Laravel 现在包含一个 database
队列驱动程序,提供一个简单的、本地的队列驱动程序,只需安装数据库软件即可。
Laravel 调度器
过去,开发人员为他们希望调度的每个控制台命令生成一个 Cron 条目。然而,这是一种麻烦。你的控制台计划不再在源代码控制中,你必须 SSH 到你的服务器以添加 Cron 条目。让我们的生活更轻松。Laravel 命令调度器允许你在 Laravel 本身中流畅而富有表现力地定义你的命令计划,并且你的服务器上只需要一个 Cron 条目。
它看起来像这样:
$schedule->command('artisan:command')->dailyAt('15:00');
当然,查看完整文档以了解有关调度器的所有信息!
Tinker / Psysh
php artisan tinker
命令现在使用 Justin Hileman 的 Psysh,这是一个更强大的 PHP REPL。如果你喜欢 Laravel 4 中的 Boris,你会喜欢 Psysh。更好的是,它在 Windows 上也能工作!要开始使用,只需尝试:
php artisan tinker
DotEnv
Laravel 5 现在使用 Vance Lucas 的 DotEnv 而不是各种混乱的、嵌套的环境配置目录。这个库提供了一种超级简单的方式来管理你的环境配置,并使 Laravel 5 中的环境检测变得轻而易举。有关更多详细信息,请查看完整的配置文档。
Laravel Elixir
Laravel Elixir,由 Jeffrey Way 提供,提供了一种流畅、富有表现力的接口,用于编译和连接你的资产。如果你曾经被学习 Grunt 或 Gulp 吓到,现在不必担心了。Elixir 使得使用 Gulp 编译你的 Less、Sass 和 CoffeeScript 变得轻而易举。它甚至可以为你运行测试!
有关 Elixir 的更多信息,请查看完整文档。
Laravel Socialite
Laravel Socialite 是一个可选的、与 Laravel 5.0+ 兼容的包,提供完全无痛的 OAuth 提供者认证。目前,Socialite 支持 Facebook、Twitter、Google 和 GitHub。它看起来像这样:
public function redirectForAuth()
{
return Socialize::with('twitter')->redirect();
}
public function getUserFromProvider()
{
$user = Socialize::with('twitter')->user();
}
不再需要花费数小时编写 OAuth 认证流程。几分钟内即可开始!完整文档包含所有详细信息。
Flysystem 集成
Laravel 现在包括强大的 Flysystem 文件系统抽象库,提供与本地、Amazon S3 和 Rackspace 云存储的无痛集成 - 所有这些都使用一个统一而优雅的 API!在 Amazon S3 中存储文件现在就像这样简单:
Storage::put('file.txt', 'contents');
有关 Laravel Flysystem 集成的更多信息,请查阅完整文档。
表单请求
Laravel 5.0 引入了表单请求,它们扩展了 Illuminate\Foundation\Http\FormRequest
类。这些请求对象可以与控制器方法注入结合使用,提供一种无样板的方法来验证用户输入。让我们深入了解并查看一个示例 FormRequest
:
<?php
namespace App\Http\Requests;
class RegisterRequest extends FormRequest
{
public function rules()
{
return [
'email' => 'required|email|unique:users',
'password' => 'required|confirmed|min:8',
];
}
public function authorize()
{
return true;
}
}
一旦定义了类,我们就可以在控制器操作上进行类型提示:
public function register(RegisterRequest $request)
{
var_dump($request->input());
}
当 Laravel 服务容器识别出它正在注入的类是 FormRequest
实例时,请求将自动验证。这意味着如果调用了你的控制器操作,你可以安全地假设 HTTP 请求输入已根据你在表单请求类中指定的规则进行了验证。更重要的是,如果请求无效,将自动发出 HTTP 重定向,你可以自定义,并且错误消息将被闪存到会话中或转换为 JSON。**表单验证从未如此简单。**有关 FormRequest
验证的更多信息,请查看文档。
简单的控制器请求验证
Laravel 5 基础控制器现在包括一个 ValidatesRequests
trait。这个 trait 提供了一个简单的 validate
方法来验证传入的请求。如果 FormRequests
对你的应用程序来说有点过多,请查看这个:
public function createPost(Request $request)
{
$this->validate($request, [
'title' => 'required|max:255',
'body' => 'required',
]);
}
如果验证失败,将抛出异常,并自动将适当的 HTTP 响应发送回浏览器。验证错误甚至会被闪存到会话中!如果请求是 AJAX 请求,Laravel 甚至会负责将验证错误的 JSON 表示发送回你。
有关此新方法的更多信息,请查看文档。
新生成器
为了补充新的默认应用程序结构,框架中添加了新的 Artisan 生成器命令。有关更多详细信息,请参阅 php artisan list
。
配置缓存
你现在可以使用 config:cache
命令将所有配置缓存到一个文件中。
Symfony VarDumper
流行的 dd
辅助函数已升级为使用惊人的 Symfony VarDumper。这提供了彩色编码的输出,甚至可以折叠数组。只需在你的项目中尝试以下操作:
dd([1, 2, 3]);
Laravel 4.2
通过在 4.2 安装中运行 php artisan changes
命令或查看 Github 上的更改文件来获取此版本的完整更改列表。这些说明仅涵盖此版本的主要增强和更改。
在 4.2 发布周期中,许多小错误修复和增强已被合并到各种 Laravel 4.1 点版本中。因此,请务必查看 Laravel 4.1 的更改列表!
PHP 5.4 要求
Laravel 4.2 需要 PHP 5.4 或更高版本。此升级的 PHP 要求允许我们使用新的 PHP 功能,如 traits,以为工具(如 Laravel Cashier)提供更具表现力的接口。PHP 5.4 还带来了显著的速度和性能改进。
Laravel Forge
Laravel Forge 是一个新的基于 Web 的应用程序,提供了一种简单的方法来在你选择的云上创建和管理 PHP 服务器,包括 Linode、DigitalOcean、Rackspace 和 Amazon EC2。支持自动化 Nginx 配置、SSH 密钥访问、Cron 作业自动化、通过 NewRelic 和 Papertrail 进行服务器监控、“推送部署”、Laravel 队列工作者配置等,Forge 提供了启动所有 Laravel 应用程序的最简单和最实惠的方法。
默认的 Laravel 4.2 安装的 app/config/database.php
配置文件现在默认配置为 Forge 使用,允许更方便地将新应用程序部署到平台上。
有关 Laravel Forge 的更多信息,请访问官方 Forge 网站。
Laravel Homestead
Laravel Homestead 是一个官方的 Vagrant 环境,用于开发强大的 Laravel 和 PHP 应用程序。大多数盒子的配置需求在盒子打包分发之前就已处理完毕,使得盒子启动速度极快。Homestead 包括 Nginx 1.6、PHP 5.6、MySQL、Postgres、Redis、Memcached、Beanstalk、Node、Gulp、Grunt 和 Bower。Homestead 包括一个简单的 Homestead.yaml
配置文件,用于在单个盒子上管理多个 Laravel 应用程序。
默认的 Laravel 4.2 安装现在包括一个 app/config/local/database.php
配置文件,默认配置为使用 Homestead 数据库,使 Laravel 的初始安装和配置更加方便。
官方文档也已更新,包括 Homestead 文档。
Laravel Cashier
Laravel Cashier 是一个简单、富有表现力的库,用于管理与 Stripe 的订阅计费。随着 Laravel 4.2 的引入,我们将 Cashier 文档与主要的 Laravel 文档一起包含,尽管组件本身的安装仍然是可选的。此版本的 Cashier 带来了众多错误修复、多货币支持以及与最新 Stripe API 的兼容性。
守护进程队列工作者
Artisan queue:work
命令现在支持 --daemon
选项以在“守护进程模式”下启动工作者,这意味着工作者将继续处理作业而不会重新启动框架。这导致 CPU 使用量显著减少,但代价是应用程序部署过程稍微复杂一些。
有关守护进程队列工作者的更多信息,请查阅队列文档。
邮件 API 驱动程序
Laravel 4.2 引入了新的 Mailgun 和 Mandrill API 驱动程序用于 Mail
功能。对于许多应用程序,这提供了一种比 SMTP 选项更快、更可靠的发送电子邮件的方法。新的驱动程序利用 Guzzle 4 HTTP 库。
软删除 Traits
通过 PHP 5.4 traits 引入了一种更清晰的“软删除”和其他“全局作用域”的架构。这种新架构允许更容易地构建类似的全局 traits,并在框架本身中实现更清晰的关注点分离。
有关新的 SoftDeletingTrait
的更多信息,请查阅 Eloquent 文档。
方便的认证和提醒 Traits
默认的 Laravel 4.2 安装现在使用简单的 traits 来包含认证和密码提醒用户界面所需的属性。这为开箱即用的默认 User
模型文件提供了更清晰的结构。
"简单分页"
一个新的 simplePaginate
方法被添加到查询和 Eloquent 构建器中,允许在分页视图中使用简单的“下一页”和“上一页”链接时进行更高效的查询。
迁移确认
在生产环境中,破坏性的迁移操作现在将要求确认。可以使用 --force
命令强制运行命令而无需任何提示。
Laravel 4.1
完整更改列表
通过在 4.1 安装中运行 php artisan changes
命令或查看 Github 上的更改文件来获取此版本的完整更改列表。这些说明仅涵盖此版本的主要增强和更改。
新的 SSH 组件
此版本引入了一个全新的 SSH
组件。此功能允许你轻松 SSH 到远程服务器并运行命令。要了解更多信息,请查阅 SSH 组件文档。
新的 php artisan tail
命令利用了新的 SSH 组件。有关更多信息,请查阅 tail
命令文档。
Boris 在 Tinker 中
如果你的系统支持,php artisan tinker
命令现在使用 Boris REPL。要使用此功能,必须安装 readline
和 pcntl
PHP 扩展。如果你没有这些扩展,将使用 4.0 的 shell。
Eloquent 改进
Eloquent 中添加了一个新的 hasManyThrough
关系。要了解如何使用它,请查阅 Eloquent 文档。
还引入了一个新的 whereHas
方法,允许基于关系约束检索模型。
数据库读/写连接
现在在整个数据库层,包括查询构建器和 Eloquent 中,自动处理单独的读/写连接。有关更多信息,请查阅文档。
队列优先级
通过将逗号分隔的列表传递给 queue:listen
命令,现在支持队列优先级。
失败的队列作业处理
队列功能现在包括在使用新的 --tries
开关在 queue:listen
上时自动处理失败的作业。有关处理失败作业的更多信息,请查阅队列文档。
缓存标签
缓存“部分”已被“标签”取代。缓存标签允许你为缓存项分配多个“标签”,并刷新分配给单个标签的所有项。有关使用缓存标签的更多信息,请查阅缓存文档。
灵活的密码提醒
密码提醒引擎已更改,以提供在验证密码、将状态消息闪存到会话等方面更大的开发者灵活性。有关使用增强的密码提醒引擎的更多信息,请查阅文档。
改进的路由引擎
Laravel 4.1 具有完全重写的路由层。API 是相同的;然而,与 4.0 相比,注册路由的速度提高了 100%。整个引擎已大大简化,并且对 Symfony 路由的依赖已最小化到路由表达式的编译。
改进的会话引擎
在此版本中,我们还引入了一个全新的会话引擎。与路由改进类似,新的会话层更精简、更快。我们不再使用 Symfony(因此也不使用 PHP)的会话处理设施,而是使用一个更简单、更易于维护的自定义解决方案。
Doctrine DBAL
如果你在迁移中使用 renameColumn
函数,你需要将 doctrine/dbal
依赖项添加到你的 composer.json
文件中。此包不再默认包含在 Laravel 中。