编程

Laravel 10.15 发布

482 2023-07-12 21:30:00

本周,Laravel 团队发布了 v10.15, 随之的功能包括 sub-minute scheduling, 原始 SQL 查询生成方法、视图中抛出 HTTP 异常,等等:

Sub-minute scheduling

Jess Archer 贡献了 Sub-minute Scheduling, 使之为任务调度时提供了新的频率选项:

$schedule->job(new ExampleJob)->everySecond();
$schedule->job(new ExampleJob)->everyTwoSeconds();
$schedule->job(new ExampleJob)->everyFiveSeconds();
$schedule->job(new ExampleJob)->everyTenSeconds();
$schedule->job(new ExampleJob)->everyFifteenSeconds();
$schedule->job(new ExampleJob)->everyTwentySeconds();
$schedule->job(new ExampleJob)->everyThirtySeconds();

此前在不使用社区包的情况下,所提供的最高频率为每分钟。对于那些需要更频繁地运行计划任务的人来说,这是一个很棒的补充。有关此功能的详细信息、注意事项和讨论,请参阅PR请求#47279!

Raw SQL 方法添加到 query builder

我们提到了 Laravel 10 即将推出带有绑定的原始查询输出,它在v10.15中发布!Tobias Petry贡献了这一功能,其中包括三种方法,您可以使用它们来查看带有绑定的查询生成器的原始SQL:

$query->ddRawSql(); // SQL string output via dd()
$query->dumpRawSql(); // SQL string output via dump()
$query->toRawSql(); // raw sql string

"notification" markdown mailable 的内联附件支持

Nuno Maduro 为通知 markdown mailable 内联附件提供了支持。有关更多详细信息,请参阅拉取请求#47643和拉取请求#47603。

DB::getRawQueryLog() 方法

@Fuwasegu 提供了一个 getRawQueryLog() 方法,该方法的工作原理与 DB::getQueryLog() 相似: 

DB::enableQueryLog();
 
// ... perform queries
 
$logs = DB::getRawQueryLog();
/*
[
  [
    "raw_query" => "select * from "users" where "id" in (3, 6, 8)"
    "time" => 4.06
  ]
]
*/

字符串 isUrl() 方法

Graham Campbell 贡献了 isUrl() 方法,用来验证一个字符串是否是有效的 URL。它使用验证器的 validateUrl() 方法的逻辑,而 validateUrl 方法现在调用了这个新方法:

use Illuminate\Support\Str;
 
Str::isUrl('https://example.com'); // true
Str::isUrl('ms-officeapp://launchapp'); // true
Str::isUrl('invalid://launchapp'); // false
Str::isUrl('//example.com'); // false

允许在视图中抛出 HTTP exceptions

Nuno Maduro 贡献了视图中抛出 HTTP exception 的功能:

@php
    if (! Gate::check('view-books')) {
        abort(403);
    }
 
    $books = auth()->user()->books;
@endphp
 
@foreach ($books as $book)
    <div>
        {{ $book->title }}
    </div>
@endforeach