[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()
メソッドのオペレータにin
、not 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]);
詳しい変更については以下を確認してください。