
[Laravel] 5.6.23がリリースされました
laravel/frameworkのバージョン5.6.23がリリースされました。更新された機能について確認していきます。
Added
1. Migration時にテーブルのindexのリネームが可能になりました (#24147)
MySQL, Postgres, MS SQLについてサポートされました。
$table->renameIndex('from', 'to');
2. 特定のイベントを偽装して発火させるEvent::fakeFor()メソッドが追加されました (#24230)
3. Bladeエンジンに@cananyディレクテイブが追加されました (#24137)
Gateクラスのanyメソッドを呼ぶディレクティブです。複数の権限を評価できます。
<table>
<tr>
<th>...</th>
@canany(['edit_post', 'delete_post'])
<th>Actions</th>
@endcanany
</tr>
<tr>
<td>...</td>
@canany(['edit_post', 'delete_post'])
<td>
@can('edit_post')
<button>Edit</button>
@endcan
@can('delete_post')
<button>Delete</button>
@endcan
</td>
@endcanany
</tr>
</table>
4. TestReponse::assertUri()メソッドが追加されました (#24267)
詳しい変更については以下を確認してください。
Release v5.6.23 · laravel/framework · GitHub

[Laravel] 5.6.22がリリースされました
laravel/frameworkのバージョン5.6.22がリリースされました。更新された機能について確認していきます。
Added
1. Collection::loadMissing()メソッドが追加されました (#24166, #24215)
ネストしたリレーションの取得や、コールバックに対応しました。
// before
(new \Illuminate\Database\Eloquent\Collection($posts->pluck('comments')->collapse()))->load('parent');
// after
$posts = Post::with('comments')->get();
$posts->loadMissing('comments.parent');
詳しい変更については以下を確認してください。
Release v5.6.22 · laravel/framework · GitHub

[Laravel] 5.6.21がリリースされました
laravel/frameworkのバージョン5.6.21がリリースされました。更新された機能について確認していきます。
Added
1. FilesystemManager::forgetDisk()メソッドが追加されました (#24057, @cbfb4fb)
アプリケーション内ではFileSystemのDisk設定はキャッシュされるため、再設定が必要な場合に使用します。
2. artisanのdownコマンドに--allowパラメーターが追加されました (#24003)
メンテナンスモードにする際に許可するIPを指定可能になりました。
php artisan down --allow=127.0.0.1 --allow=192.168.0.0/16
3. validationのルールにgt, lt, gte, lteが追加されました (#24091, #24135)
4. TestResponse::assertCookieNotExpired()メソッドが追加されました (#24119)
詳しい変更については以下を確認してください。
Release v5.6.21 · laravel/framework · GitHub

[Laravel] 5.6.20がリリースされました
laravel/frameworkのバージョン5.6.20がリリースされました。更新された機能について確認していきます。
Added
1. abbort()メソッドにResponse (Responsable)クラスを渡せるようになりました (@4e29889)
以下の様なレスポンスのカスタマイズか可能になりました。
abort(response()->json(['thats', 'zonda']))
2. タスクスケジュールにpingBeforeIf、thenPingIfメソッドが追加されました (#24077, @1bf54d2)
特定の条件でpingするサンプル
$schedule->command('something')
->everyMinute()
->pingBeforeIf(app()->environment() == 'production', $url)
->thenPingIf(app()->environment() == 'production', $url);
3. withDefault()メソッドがMorphToリレーションでもサポートされるようになりました (#24061)
詳しい変更については以下を確認してください。
Release v5.6.20 · laravel/framework · GitHub

[Laravel Forge] AWSのVPCが選択可能になりました
タイトルの通り、ForgeでAWS上にサーバー作成時に、任意のVPCが選択できるようになりました。
Laravel Forge - Instant PHP Servers
以前は専用のVPCにしか作成できなかったので、
Forgeでサーバー作成
AWS上でスナップショット作成して別のVPCで起動
新しく起動したインスタンスをForgeと接続して、古いインスタンス削除
といった作業をしていましたが不要になりました。
Forgeの使い方についても今後触れていこうと思います。
現在3ヶ月間50%offになるキャンペーンを行なっていますので興味のある方はどうぞ。
Laravel Forge 50% off your first 3 months

[Laravel] 5.6.19がリリースされました
laravel/frameworkのバージョン5.6.19がリリースされました。更新された機能について確認していきます。
Added
1. SparkPostのエンドポイントが指定可能になりました (#23910)
2. Optionalクラスに__isset()メソッドが追加されました (#24042)
3. メール通知の際にcc、bcc、replyToが複数指定可能になりました (#23760)
詳しい変更については以下を確認してください。
Release v5.6.19 · laravel/framework · GitHub

[Laravel] 5.6.18がリリースされました
laravel/frameworkのバージョン5.6.18がリリースされました。更新された機能について確認していきます。
Added
1. MySQL 8.0に対応しました (#23948)
2. カスタムFileSystemでオリジナルのURLを指定できるようになりました (#23964)
3. PostgreSQLのオペレーターがが追加されました (#23945)
以下のオペレーターが追加されました。
not ilike
is distinct from
is not distinct from
4. PusherのBroadcastにJSONPコールバックが利用できるようになりました (#24018, @b9ab427)
詳しい変更については以下を確認してください。
Releases · laravel/framework · GitHub

[Laravel] 5.6.17がリリースされました
laravel/frameworkのバージョン5.6.17がリリースされました。更新された機能について確認していきます。
Added
1. クエリビルダーのサブクエリを生成するメソッドが追加されました (#23818)
以下のメソッドでサブクエリを生成できます。
joinSub
leftJoinSub
rightJoinSub
DB::table('table')->joinSub('select * from "subtable"', 'sub', ...);
DB::table('table')->joinSub(function ($q) { $q->from('subtable'); }, 'sub', ...);
DB::table('table')->joinSub(DB::table('subtable')->where('foo', 'bar'), 'sub', ...);
詳しい変更については以下を確認してください。
Release v5.6.17 · laravel/framework · GitHub

[Laravel] Optionalヘルパーの便利な使い方
optionalhelperは、Laravel5.5で導入されました。このクラスは、オブジェクトに存在しないプロパティを参照した場合に発生するエラーを回避することができます。
一般的な利用方法は以下のように任意のオブジェクトに対して行います。
ユーザー情報を持つ$userが存在しなかった場合にも、各プロパティへの参照はnullが返却されます。
$user = App\User::find($id);
return optional($user)->name;
また、Laravel5.7ではBladeオペレータのorが削除される予定です。
PHP7で実装された??オペレータを使って同等のことができますが、optionalを使用することで冗長をなくすことができます。
下記の二つのコードは同じ動作を行います。
// null coalesce
return $user->profile->twitter_id ?? null;
// optional
return optional($user->profile)->twitter_id;
そして、Laravel5.5.13ではoptionalメソッドの第二引数にクロージャが渡せるようになりました。
これは第一引数のオブジェクトが存在する場合のみ、クロージャが実行されます。
return optional(User::find($id), function ($user) {
return TwitterApi::findUser($user->twitter_id);
});
optionalをうまく活用することで、より見やすいコーディングが可能になるでしょう。
Using the Laravel Optional Helper and the New Optional Closure - Laravel News

[Laravel] 5.6.15がリリースされました
laravel/frameworkのバージョン5.6.14がリリースされました。更新された機能について確認していきます。
今回はセキュリティアップデートが含まれているので、アップグレードすることをお勧めします。
Security
1. Encrypter::validPayload()メソッドで暗号ivの長さについて評価するようになりました (886d261)
詳しい変更については以下を確認してください。
Release v5.6.15 · laravel/framework · GitHub