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

laravel/frameworkのバージョン5.8.27がリリースされました。追加された機能について確認します。

mix()ヘルパーでアセットのURLが変更できるようになりました (#28952)

以前のアップデートでapp.asset_urlを指定することでCDNを利用したファイルの配信が可能になりましたが、同様にLaravel MixでビルドしたファイルについてもCDN等からの配信が可能になりました。

有効にする場合はconfig/app.phpにてmix_urlキーでURLを指定します。

RedisManager::setDriver()メソッドが追加されました (#28985)

プログラムの実行中にredisのドライバーを変更する必要がある場合にこのメソッドを利用できます。

MorphToリレーションを操作可能なwhereHasMorph()メソッドが追加されました (#28928)

MorphTo関係にあるモデルに対してもwhereHasMorph()を利用して追加のクエリを発行できるようになりました。

今までは関連するデータに対して追加のクエリを発行するwhereHas()MorphToリレーションについては利用できませんでしたが、この問題が解消されました。

対象となるモデルを引数に与え、コールバックを利用してクエリを発行できます。

Relation::morphMap(['posts' => Post::class]);

Comment::whereHasMorph('commentable', [Post::class, Video::class], function ($query) {
    $query->where('title', 'foo');
})->get();

また、それぞれのモデルに対して別の処理を行いたい場合には以下のように使用します。

Relation::morphMap(['posts' => Post::class]);

Comment::whereHasMorph('commentable', [Post::class, Video::class], function ($query, $type) {
    if ($type === Post::class) {
        $query->where('title', 'foo');
    }
     if ($type === Video::class) {
        $query->where('title', 'bar');
    }
})->get();

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

Release v5.8.27 · laravel/framework · GitHub

© Xzxzyzyz