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

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

リレーションでchunkById()メソッドがサポートされました

リレーションを指定しているモデルで以下のように利用できます。

$user->posts()->chunkById(2, function ($collection) {
    // ...
});

CollectionwhereNotBetween()メソッドが追加されました

値の範囲外でフィルターをかけることができます。

$collection = collect([
    ['product' => 'Pencil', 'price' => 30],
    ['product' => 'Chair', 'price' => 80],
    ['product' => 'Door', 'price' => 100],
    ['product' => 'Bookcase', 'price' => 150],
   ['product' => 'Desk', 'price' => 200],
]);

$filtered = $collection->whereNotBetween('price', [100, 200]);

$filtered->all();

/*
    [
        ['product' => 'Bookcase', 'price' => 30],
        ['product' => 'Bookcase', 'price' => 80],
    ]
*/

ログチャンネルで出力されるログのフォーマットを変更できるようになりました

FilesystemAdapterassertExistsassertMissingアサーションが追加されました

DetectsLostConnectionsトレイトにエラー内容が追加されました

RouteoriginalParameters()メソッドが追加されました

LaravelではModel Binding等でリクエストされたパラメーターに対して、それに対応するオブジェクト等をバインドできます。

コントローラー等でオリジナルのパラメーターが必要な場合にこのメソッドを利用します。

$phpunit = $this;
$router = $this->getRouter();

$router->bind('bar', function ($value) {
    return strlen($value);
});

$router->get('foo/{bar}', [
    'middleware' => SubstituteBindings::class,
    'uses' => function ($bar) use ($router, $phpunit) {
        $route = $router->getCurrentRoute();
        $phpunit->assertEquals('taylor', $route->originalParameter('bar'));
        $phpunit->assertEquals('default', $route->originalParameter('unexisting', 'default'));
        $phpunit->assertEquals(['bar' => 'taylor'], $route->originalParameters());
         return $bar;
    },
]);

$this->assertEquals(6, $router->dispatch(Request::create('foo/taylor', 'GET'))->getContent());

QueueFakepushedJobs()メソッドが追加されました


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

Release v5.7.20 · laravel/framework · GitHub

© Xzxzyzyz