Laravel 7.4 发布

Laravel 团队昨天发布了 v7.4.0 版本,其中包含相当多的新特性,例如自定义的模型转换器接口、 When 高阶集合代理,以及从查询构建器中清除现有 order 的功能。

高阶的 When 集合代理

Loris Leiva 贡献了使用高阶代理的能力,它的方法是 Collection::When()

// PR 中的相关代码
$collection->when($condition,function ($collection) use ($item) {
    $collection->push($item);
});

// 现在重构为
$collection->when($condition)->push($item);

  

此 PR 使您能够链接其他高阶代理方法:

// 以前
$collection->when($condition,function ($collection) {
    $collection->map->parseIntoSomething();
});

// 现在重构为
$collection->when($condition)->map->parseIntoSomething();

  

对于 Artisan 命令行增加 expectsChoice () 进行选择

Adrian Nürnberger 提供了一个控制台测试方法,用于在命令行中询问你的选择。

就像下面这样:

$name = $this->choice('What is your name?',['Taylor','Dayle'],$defaultIndex);

  

之前你只能断言此问题的回复,不能测试选择:

$this->artisan('question')
  ->expectsQuestion('What is your name?','Taylor')
  ->assertExitCode(0);

  

在 Laravel7.4,你可以给出选项,像下面这样做:

$this->artisan('question')
  ->expectsChoice('What is your name?','Taylor','Dayle'])
  ->assertExitCode(0);

  

你还可以在第四个参数传入一个 boolean 类型的值,用来保证选择顺序

$this->artisan('question')
  ->expectsChoice('What is your name?',true)
  ->assertExitCode(0);

  

为 Blade 的 @props 标签添加默认值

@props 拥有了自定义默认值的能力

<!-- 以前的版本: -->
@props(['type','message'])
@php
    $type = $type ?? 'info'
@endphp

<!-- Laravel >=7.4 -->
@props(['type' => 'info','message'])

  

Castable 接口

Brent Roose 贡献了一个 Castable 接口,允许 Castable 类型指定其基础类:

// 以前
class ModelX extends Model
{
    protected $casts = [
        'data' => CastToDTO::class . ':' . MyDTO::class,];
}

// 现在
class ModelY extends Model
{
    protected $casts = [
        'data' => MyDTO::class,];
}

// 基础类
use Illuminate\Contracts\Database\Eloquent\Castable;

class MyDTO implements Castable
{
    public static function castUsing()
    {
        return CastToDTO::class . ':' . static::class;
    }
}

  

从查询构建器中删除 order

Jonathan Reinink 为查询构建器贡献了一个 reorder() 方法,用于重置其 orderBy()

$query = DB::table('users')->orderBy('name');

$unorderedUsers = $query->reorder()->get();

  

重新排序允许您在雄辩的关系中定义默认顺序,并能够在需要时取消:.

class Account extends Model
{
    public function users()
    {
        return $this->hasMany(User::class)->orderBy('name');
    }
}

// 删除名称 orderBy 和 order by email
$account->users()->reorder()->orderBy('email');

// 同样可以写成:
$account->users()->reorder('email');

  

发行说明

 

您可以在下面看到新功能和更新的完整列表以及在 Github 上看到 [7.3.0 和 7.4.0] 之间的区别(...)

 

v7.4.0

添加内容

 

  • 可自定义 make:policy 的存档位置 (#32040,9d36a36)
  • 为集合添加 HigherOrderWhenProxy (#32148)
  • 添加了 Illuminate\Testing\PendingCommand::expectsChoice() (#32139)
  • 添加了对于 blade 中 “props” 标记的支持 (#32177)
  • 添加了 Castable 接口 (#32129,9cbf908,651371a)
  • 增加了从查询生成器中删除订单的功能 (#32186)

修复

 

  • 在 PendingMailFake::sendNow() 和 PendingMailFake::send() (#32093) 中添加了缺少的返回值
  • 修复了自定义模型属性转换 (#32118)
  • 修复了路由组前缀 (#32135,870efef)
  • 修复固定组件类视图引用 (#32132)

相关更改

 

  • 删除 SWIFT 邮件绑定程序 (#32165)
  • 当运行 stub:publish 命令时发布 console stub (#32096)
  • 当运行 make:rule 命令时发布 rule stub (#32097)
  • 将 midleware.stub 添加到运行 php artisan stub:publish 时发布的文件中 (#32099)
  • 将 factory.stub 添加到运行 php artisan stub:publish 时发布的文件中 (#32100)
  • 将 eneder.stub 添加到运行 php artisan stub:publish 时发布的文件中 (#32122)

 

 

更多学习内容请访问:

八重樱:腾讯T3-T4标准精品PHP架构师教程目录大全,只要你看完保证薪资上升一个台阶(持续更新)

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


laravel的dd函数不生效怎么办
看不懂laravel文档咋办
安装laravel框架出现command怎么办
Laravel开发API怎么使用事务
laravel怎么构建复杂查询条件
laravel如何实现防止被下载
为什么laravel比yii火
一些常见的Laravel定时任务不运行的问题
laravel用路由有什么好处
composer无法安装laravel怎么办
laravel现在还用吗
laravel怎么替换主键id
laravel的appurl有什么用
如何修改Laravel的报错输出形式
laravel怎么避免foreach查表
laravel怎样操作数据库
laravel怎么截取字符串
laravel 是国内的吗
laravel怎么设置请求头
浅析Laravel社区Redis组件报错的问题和解决方法