前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Laravel 6.12.0 版本发布,支持从扩展包加载模型工厂

Laravel 6.12.0 版本发布,支持从扩展包加载模型工厂

作者头像
学院君
发布2020-02-19 11:22:26
7320
发布2020-02-19 11:22:26
举报
文章被收录于专栏:学院君的专栏学院君的专栏

Laravel 开发团队本周发布了 6.12.0 版本,此次更新支持从扩展包加载模型工厂,通过 dump 函数测试 Session 数据,以及很多其他新特性。另外,这次更新还包含了很多第三方开发者贡献的、用于优化重复操作的语法糖,例如过滤请求输入字段中的非布尔值。

下面我们一起来看下其中比较重要的一些新特性:

1、重要特性

1)从扩展包加载模型工厂

在 Laravel 6.12 中,你可以在扩展包中直接使用已经存在的模型工厂,而不需要重新创建它们,方法是在服务提供者中引入对应的包含模型工厂的文件,然后就可以使用它们了:

代码语言:javascript
复制
// 在某个服务提供者中...
$this->loadFactoriesFrom('source/database/factories');

// 还可以一次引入多个包含模型工厂的文件
$this->loadFactoriesFrom([
    'source_one/database/factories', 
    'source_two/database/factories',
]);
代码语言:javascript
复制

2)在响应测试中打印 Session

TestResponse 类中新增了一个 dumpSession() 方法用来打印完整的Session 或者特定键值(Session 的指定键值):

代码语言:javascript
复制
$response->dumpSession();
$response->dumpSession('example');
$response->dumpSession(['example', 'example2']);
代码语言:javascript
复制
3)Str::isUuid 辅助函数

新增了一个字符串辅助函数 isUuid() 通过验证 UUID 从 ValidatesAttributes trait 中解析特定逻辑:

代码语言:javascript
复制
// Returns true
Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de');

// Returns false
Str::isUuid('laravel');
代码语言:javascript
复制

4)请求布尔方法

新增了一个 Request::boolean() 方法用于接受请求输入字段并通过 filter_var 方法来过滤,用来判断某个字段值是否是布尔值,下面是使用示例:

代码语言:javascript
复制
$request = Request::create('/', 'GET', [
    'example1' => 'true',
    'example2' => 'false',
    'checked' => 1,
    'checked2' => '1',
    'unchecked' => 0,
    'unchecked2' => '0',
    'name' => 'Jane Doe'
]);

$request->boolean('example1'); // true
$request->boolean('example2'); // false
$request->boolean('checked'); // true
$request->boolean('checked2'); // true
$request->boolean('unchecked'); // false
$request->boolean('unchecked2'); // false
$request->boolean('name'); // false
代码语言:javascript
复制

5)工厂构建器 createMany()

新增了一个工厂方法 createMany() 用于通过自定义数据创建多条记录:

代码语言:javascript
复制
// Laravel 6.12 版本之前需要这么做
factory(User::class)->create([
    'name' => 'Taylor',
]);

factory(User::class)->create([
    'name' => 'John',
]);

// 现在可以这么做
factory(User::class)->createMany([
    ['name' => 'Taylor'],
    ['name' => 'John'],
]);

你可以在 Github 上查看完整的新特性列表和更新记录:https://github.com/laravel/framework/blob/e18a984a35b6adcd701966b3bc3da022d7533992/CHANGELOG-6.x.md#v6120-2020-01-21,以及 6.11.0 和 6.12.0 的版本差异:https://github.com/laravel/framework/compare/v6.11.0...v6.12.0。

2、更新日志

1)新增特性
  • 新增 ServiceProvider::loadFactoriesFrom() 方法
  • 新增 TestResponse::dumpSession() 方法
  • 新增 Str::isUuid() 方法
  • 恢复对 PHPUnit 7 的支持
  • 新增 Request::boolean() 方法
  • 新增 Database\Eloquent\FactoryBuilder::createMany() 方法
  • 为 PhpRedis 新增缺失选项
2)问题修复
  • 修复 Cache\RedisLock::acquire() 方法存在的问题
  • 修复数据库 url 连接解析时没有指定数据库的问题
  • 防止表名前缀不明确的列
3)代码优化
  • 修复下载大文件时内存使用问题
4)代码调整
  • 使用 Event::fake() 时在解析缓存仓库时替换事件调度器

声明:本文翻译整理自 Laravel News。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客书房 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、重要特性
    • 1)从扩展包加载模型工厂
      • 3)Str::isUuid 辅助函数
      • 2、更新日志
        • 1)新增特性
          • 2)问题修复
            • 3)代码优化
              • 4)代码调整
              相关产品与服务
              云数据库 Redis
              腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档