Laravel 10.44版本发布 - 你可以使用PHP属性添加模型作用域和观察者
Laravel  /  管理员 发布于 10个月前   270
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
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号