侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Laravel 10.44版本发布 - 你可以使用PHP属性添加模型作用域和观察者

Laravel  /  管理员 发布于 1年前   343

Laravel 团队本周发布了 v10.44,其中包含两个用于定义全局作用域和观察者的 Eloquent 模型属性、

一个新的 select() 集合方法等:


模型的新 ScopedBy 属性

Eliezer Margareten 提供了一个 ScopedBy 属性,用于在 Eloquent 模型上注册全局作用域:

use App\Models\Scopes\AncientScope;
use Illuminate\Database\Eloquent\Attributes\ScopedBy;
 
#[ScopedBy([AncientScope::class])]
class User extends Model
{
    //
}

您可以继续在模型中使用 booted() 方法来注册全局作用域:

/**
 * The "booted" method of the model.
 */
protected static function booted(): void
{
    static::addGlobalScope(new AncientScope);
}


ScopedBy 属性可接受单个观察者或观察者数组,您也可以为模型定义多个属性:

// Array type
#[ScopedBy([ScopeOne::class, ScopeTwo::class])]
 
// Repeatable string type
#[ScopedBy(ScopeOne::class)]
#[ScopedBy(ScopeTwo::class)]


模型的新 ObservedBy 属性

Eliezer Margareten 提供了一个 ObservedBy 属性,用于在 Eloquent 模型上注册模型观察者:

use App\Observers\UserObserver;
use Illuminate\Database\Eloquent\Attributes\ObservedBy;
 
#[ObservedBy([UserObserver::class])]
class User extends Authenticatable
{
    //
}



ObservedBy 属性可接受单个观察者或观察者数组,如果您喜欢,也可以为模型定义多个属性:

public function boot(): void
{
    User::observe(UserObserver::class);
}


select()集合方法

Craig Morris 提供了一个新的 Collection::select() 方法,该方法可从多维数组中选择一定数量的键。

select()方法类似于 SQL SELECT 语句:

$users = collect([
    ['name' => 'Taylor Otwell', 'role' => 'Developer', 'status' => 'active'],
    ['name' => 'Victoria Faith', 'role' => 'Researcher', 'status' => 'active'],
]);
 
$users->select(['name', 'role']);
 
/*
    [
        ['name' => 'Taylor Otwell', 'role' => 'Developer'],
        ['name' => 'Victoria Faith', 'role' => 'Researcher'],
    ],
*/



Base64 字符串方法

Mark Townsend 为 Str 和 Stringable 贡献了 toBase64() 和 fromBase64()。

这些方法分别封装了 base64_encode() 和 base64_decode():

// Using Str
$encoded = Str::toBase64('laravel-news.com');
$decoded = Str::fromBase64($encoded);
 
// Using Stringable
$encoded = str('laravel-news.com')->toBase64();
$decoded = str($encoded)->fromBase64();

下面是一个修补程序的输出示例:



#新的 Arr::take() 方法

Ryan Chandler 提供了一个 Arr::take() 方法,用于从数组中取出一定数量的项目。

如果是正数,它将从数组的前端取数,如果是负数,它将从数组的末端取数:

$data = [1, 2, 3, 4, 5, 6, 7, 8, 9];
 
Arr::take($data, 3);  // [1, 2, 3]
Arr::take($data, -3); // [7, 8, 9]
Arr::take($data, 0);  // []
Arr::take($data, 1);  // [1]
Arr::take($data, -1); // [9]


发布说明

您可以在 GitHub 上查看以下新功能和更新的完整列表,以及 10.43.0 和 10.44.0 之间的差异。

以下发布说明直接来自更新日志:

https://github.com/laravel/framework/compare/v10.43.0...v10.44.0
https://github.com/laravel/framework/blob/84e7f85769ea268ffec9acab30f7a826223b3d6f/CHANGELOG.md#v10440---2024-02-13


v10.44.0

[10.x] 由 @driesvints 在 https://github.com/laravel/framework/pull/49924 
修正 HTTP 连接异常的空请求问题

[10.x] 添加 Collection::select() 方法
(作者:@morrislaptop,发布于 https://github.com/laravel/framework/pull/49845

[10.x] 重构 UrlGenerator 中的 getPreviousUrlFromSession 方法
(作者:@milwad-dev,发布于 https://github.com/laravel/framework/pull/49944

[10.x] 在 artisan serve 中添加符合 POSIX 标准的清理工作,
作者 @Tofandel 发布于 https://github.com/laravel/framework/pull/49943

[10.x] 修复全局范围查询包含聚合时的无限循环问题,
作者 @mateusjunges 发布于 https://github.com/laravel/framework/pull/49972

[10.x] 添加 PHPUnit 11 作为冲突项
by @nunomaduro in https://github.com/laravel/framework/pull/49957

Revert "[10.x] 修复 Before/After 验证规则"
by @taylorotwell in https://github.com/laravel/framework/pull/50013

[10.x] 修复 Str 和 Stringable 助手中 replaceMatches 的 phpdoc
by @joke2k in https://github.com/laravel/framework/pull/49990

[10.x] 为 AblyBroadcaster 添加了 setAbly() 方法,
作者 @Rijoanul-Shanto 发布于 https://github.com/laravel/framework/pull/49981

[10.x] 修复 appendExceptionToException 方法异常类型检查中的问题,
作者 @t1nkl 发布于 https://github.com/laravel/framework/pull/49958

[10.x] DB 命令:当设置 "trust_server_certificate "时添加 sqlcmd -C 标志
(由 @hulkur 在 https://github.com/laravel/framework/pull/49952 提供

允许在 Laravel 的替代 TestCase 中重复使用设置和拆卸操作
(由 @crynobone 在 https://github.com/laravel/framework/pull/49973 提供

[10.x] 为 Stringable 和 Str 类添加 toBase64() 和 fromBase64() 方法,
作者 @mtownsend5512 发布于 https://github.com/laravel/framework/pull/49984

[10.x] 只有在 pcntl 可用时,才允许延迟解析 pcntl。
作者 @crynobone 发布于 https://github.com/laravel/framework/pull/50024

[10.x] 如果替代 TestCase 未使用 originalExceptionHandler 或 originalDeprecationHandler属性
,则修复缺少 Throwable 导入和处理的问题
(由 @crynobone 在 https://github.com/laravel/framework/pull/50021 提供

[10.x] 条件验证规则的类型提示
@lorenzolosa 发表于 https://github.com/laravel/framework/pull/50017

[10.x] 引入新的 Arr::take() 助手,
作者 @ryangjchandler,发布于 https://github.com/laravel/framework/pull/50015

[10.x] 改进了对带有 HTML 注释或换行符的空组件槽的处理,
作者 @comes,发布于 https://github.com/laravel/framework/pull/49966

[10.x] 为模型引入观察属性(Observe attribute),
作者 @emargareten 发布于 https://github.com/laravel/framework/pull/49843

[10.x] 为模型添加 ScopedBy 属性,
作者 @emargareten,原文地址:https://github.com/laravel/framework/pull/50034

[10.x] 更新 GeneratorCommand 中的保留名称
(作者:@xurshudyan,原文地址:https://github.com/laravel/framework/pull/50043

[10.x] 修复 Validator::validated 获取 nullable 数组的问题,
作者 @helitik,原文地址:https://github.com/laravel/framework/pull/50056

[10.x] 将 Herd 特定的环境变量传递给 "artisan serve"
by @mpociot in https://github.com/laravel/framework/pull/50069

移除 UUID 检测中的 regex 大小写不敏感修饰符,以稍微加快检测速度,
作者 @maximal 发布于 https://github.com/laravel/framework/pull/50067

[10.x] HTTP 重试方法可以接受数组作为第一个参数,
作者 @me-shaon 发布于 https://github.com/laravel/framework/pull/50064

[10.x] 修复 DB::afterCommit() 在使用 DatabaseTransactions 的测试中被破坏的问题,
作者 @oprypkhantc 发布于 https://github.com/laravel/framework/pull/50068


转:

https://laravel-news.com/laravel-10-44-0

  • 上一条:
    PHPStorm用户必备插件
    下一条:
    使用Laravel Setting Pro软件包轻松管理应用程序设置
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • Laravel 11.14版本发布 - 新的字符串助手和ServeCommand改进(0个评论)
    • Laravel 11.12版本发布 - Artisan的`make`命令自动剪切`.php `扩展(0个评论)
    • Laravel的轻量型购物车扩展包:binafy/laravel-cart(0个评论)
    • Laravel 11.11版本发布 - 查看模型中的第三方关系:show(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-01
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客