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

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

Illuminate\Support\Collectionクラスにduplicates()メソッドが追加されました (#28181)

コレクションから重複した値を取得することができます。

$duplicates = Collection::make([1, 2, 1, 'laravel', null, 'laravel', 'php', null])->duplicates()->all();
 // [2 => 1, 5 => 'laravel', 7 => null]

$duplicatesWithKey = Collection::make($items)->duplicates('framework')->all();
 // [2 => 'laravel']

Illuminate\Database\Eloquent\Collectionクラスにduplicates()メソッドが追加されました (#28194)

コレクションから重複したモデルを取得することができます。

$one = new TestEloquentCollectionModel();
$two = new TestEloquentCollectionModel();
$three = new TestEloquentCollectionModel();
$four = new TestEloquentCollectionModel();
$one->id = 1;
$one->someAttribute = '1';
$two->id = 1;
$two->someAttribute = '2';
$three->id = 1;
$three->someAttribute = '3';
$four->id = 2;
$four->someAttribute = '4';

$duplicates = Collection::make([$one, $two, $three, $four])->duplicates()->all();
// [1 => $two, 2 => $three]

Illuminate\View\FileViewFinderクラスにgetViews()メソッドが追加されました (#28198)

登録されているviewの情報を取得できます。

Illuminate\Console\Scheduling\Eventクラスに複数のメソッドが追加されました (#28167)

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

  • onSuccess()
  • onFailure()
  • pingOnSuccess()
  • pingOnFailure()
  • emailOnFailure()

スケジューリングされたコマンド実行時にこのメソッドを利用して、コマンドの実行結果に応じた処理をチェインすることができます。

protected function schedule(Schedule $schedule)
{
    $schedule->command('my:command')
        ->onSuccess(function () {
            // do something when scheduled command ran successfully
        })
        ->onFailure(function () {
            // do something when scheduled command failed
        })
        ->pingOnSuccess('https://example.com')
        ->pingOnFailure('https://example.com')
        ->emailOnFailure('[email protected]')
    ;
}

MySQL GrammarにSETタイプが追加されました (#28171)

SETタイプについてはこちらを確認してください。

QueryBuilderクラスのwhere()メソッドのオペレータにinnot inが指定可能になりました (#28192)

whereIn()whereNotIn()メソッドと同様の処理が行われます。

// these two calls produce the same query
$query->where('foo', 'in', [1, 2]);
$query->whereIn('foo', [1, 2]);

// these two calls produce the same query
$query->where('foo', 'not in', [1, 2]);
$query->whereNotIn('foo', [1, 2]);

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

Release v5.8.12 · laravel/framework · GitHub

© Xzxzyzyz