[Laravel] 7.19.1がリリースされました

laravel/frameworkのv7.18.0がリリースされました。追加された機能について確認します。

スケジュールで使用できるパターンが追加されました (#33393)

以下の3つのメソッドが追加されました。

  • everyTwoHours()
  • everyThreeHours()
  • everyFourHours()
  • everySixHours()

それぞれ2時間毎、3時間毎、4時間毎、5時間毎に実行するメドッドです。

$schedule->job(SyncSomething::class)->cron('0 */2 * * *'); // once every 2 hours

// or, with this PR

$schedule->job(SyncSomething::class)->everyTwoHours();

APIリソースクラスで明示的に値を追加できるようになりました (#33422 )

whenLoaded()と似ていますが、特定の属性値が存在する場合に、その値もしくは指定の値をレスポンスに含むことができるようになりました。

この機能を実現するために、モデルクラスが使うHasAttributesトレイトにhasAppended()メソッドが追加されました。

第2引数には存在する場合の戻り値、第3引数には存在しなかった場合の戻り値の文字列、もしくはコールバックを指定します。

この2つの引数は省略可能です。

// Resource
public function toArray($request)
{
    return [
        'id' => $this->id,
        'name' => $this->name,
        'email' => $this->email,
        'is_subscribed' => $this->whenAppended('is_subscribed'),
        'created_at' => $this->created_at,
        'updated_at' => $this->updated_at,
    ];
}

// Response
return new UserResource($user->append('is_subscribed'));

ScheduledTaskFailedイベントが追加されました (#33427)

Illuminate\Support\Stringableクラスにwhen()メソッドが追加されました (#33455)

以下の例はユーザーの認証状態からコンテンツの一部を制限する例です。

$blogContent = 'Laravel Factories Reloaded is a package by Christoph Rumpel that generates class-based model factories that you can use instead of the factory files Laravel provides';

// Before
$stringable = Str::of($blogContent);

if(!Auth::check()){
    $stringable->limit(20,'.....')
                    ->append('To Continue reading ')
                    ->append(new HtmlString('<a href="#">Get a Subscription</a>'));
}

$stringable->__toString();

// After
Str::of($blogContent)
    ->when(!Auth::check(),function($stringable){
        return $stringable->limit(20)
                        ->append('To Continue reading ')
                        ->append(new HtmlString('<a href="#">Get a Subscription</a>'));
    })
    ->__toString();

詳しい変更については以下を確認してください。

Release v7.18.0 · laravel/framework · GitHub

© Xzxzyzyz