
[Laravel] 5.7.14がリリースされました
laravel/frameworkのバージョン5.7.14がリリースされました。追加された機能について確認します。
1. Illuminate\Cookie\CookieJarクラスにMacroableトレイトが追加されました
2. パスワードリマインダー、パスワードリセットのRouteを無効にできるようになりました
システム上でユーザーにパスワードのリセットを許可しない場合に使用します。
Auth::routes()の引数で指定できます。
Auth::routes(['reset' => false]);
3. エラー関連のviewファイルが取り込まれるようになりました
vendor:publishコマンド実行時に、既存のviewファイルが/resources/views/errorsへコピーされます。
4. Notificationクラスにリトライ回数とタイムアウトを指定できるようになりました
$tries、$timeoutにて指定可能です。
class TestNotification extends Notification implements ShouldQueue
{
use Queueable;
public $tries = 3; // Max tries
public $timeout = 15; // Timeout seconds
// ...
}
5. メール周りのログを別ファイルに出力可能になりました
メール周りのトラブルは付き物ですが、ログが埋まってしまいがちです。
専用のloggingを指定できるようになり、デバッグが容易になりました。
config/logging.phpにドライバを追加します。
'channels' => [
// ...
'mail' => [
'driver' => 'daily',
'path' => storage_path('logs/mail.log'),
'level' => 'debug',
'days' => 14,
],
],
config/mail.phpにlog_channelとして専用のドライバを指定可能です。
'log_channel' => 'mail',
6. 静的ファイルの配信URLが指定可能になりました
CDN等を利用してアセットファイルの配信を行う場合にとても便利な機能が追加されました。
config/app.phpにasset_urlとして配信元のURLを指定することで別ドメインとして利用可能です。省略した場合にはオリジナルのドメインで配信されます。
// config/app.php
`asset_url` => 'https://cdn.something.com',
asset('js/something.js');
// => https://cdn.something.com/js/something.js
7. DetectsLostConnectionsトレイトにError while sending QUERY packetメッセージが追加されました
8. コンソール実行中と判断するフラグが指定可能になりました
LARAVEL_RUNNING_IN_CONSOLEに値を指定することでフラグが立つようになりました。
// Illuminate\Foundation\Application
/**
* Determine if the application is running in the console.
*
* @return bool
*/
public function runningInConsole()
{
return env(
'LARAVEL_RUNNING_IN_CONSOLE',
php_sapi_name() === 'cli' || php_sapi_name() === 'phpdbg'
);
}
詳しい変更については以下を確認してください。
Release v5.7.14 · laravel/framework · GitHub

Laracastsが50%オフのセール中です
Laravelを学ぶ上で最も有名であろう動画サイトのLaracastsがBkack Fridayで50%オフのセール中です。
海外のサイトではありますが、Laravelでシステムを構築する際のチュートリアルからテスト方法まで様々な動画が配信されています。
プランは月額や年額、永久など色々ありますが、下記のリンク先からセール価格で購入ができます。
Laracasts 2018 Black Friday Sale
無料で見れる動画もありますので、この機会に是非ご覧になってください。

[Laravel] 5.7.13がリリースされました
laravel/frameworkのバージョン5.7.13がリリースされました。更新された機能について確認していきます。
Added
1. カスタムバリデーションルールでメッセージを配列で指定可能になりました #26327
2. CollectionにwhenEmpty()/whenNotEmpty()/unlessEmpty()/unlessNotEmpty()メソッドが追加されました #26345
3. Collectionにsome()メソッドが追加されました #26376, 8f7e647
4. Illuminate\Cache\Repositoryにmissing()メソッドが追加されました #26351
5. Illuminate\View\FactoryにMacroableトレイトが追加されました #26351
6. UNIONを使用する際にも集計クエリが可能になりました #26365
以下のようなクエリに対してもcount()で集計可能になりました。
DB::table('posts')->union(DB::table('videos'))->count();
select count(*) as aggregate from (
(select * from `posts`) union (select * from `videos`)
) as `temp_table`
詳しい変更については以下を確認してください。
Release v5.7.13 · laravel/framework · GitHub

[Laravel] 5.7.12がリリースされました
laravel/frameworkのバージョン5.7.12がリリースされました。更新された機能について確認していきます。
Added
1. CacheManagerにforgetDriver()メソッドが追加されました #26264, fd9ef49
このメソッドを使用すると、CacheManagerによって既に開かれている接続を削除できます。接続を強制的に再接続するか、設定オプションを変更して接続を再作成します。
2. Illuminate\Foundation\Http\KernelにgetMiddlewareGroups()メソッドが追加されました #26268
テスト時に指定されたmiddleware が利用されているかの確認ができるようになりました。
/** @test */
public function it_registers_the_track_utm_middleware_in_the_web_group()
{
$groups = resolve(\App\Http\Kernel::class)->getMiddlewareGroups();
$this->assertContains(\App\Http\Middleware\TrackUTM::class, $groups['web']);
}
3. SQLite利用じに外部キー制約の有効/無効が切り替え可能になりました #26298, #26306, 674f8be
config/database.phpにて設定が可能です。
'sqlite' => [
// ...
'foreign_key_constraints' => true,
],
詳しい変更については以下を確認してください。
Release v5.7.12 · laravel/framework · GitHub

[Laravel] 5.7.11がリリースされました
laravel/frameworkのバージョン5.7.11がリリースされました。更新された機能について確認していきます。
Added
1. Eloquentモデルでdecimal型へのキャストが指定可能になりました #26173
小数点付きの値を更新するときに型の保持ができるようになりました。
protected $casts = [
'amount' => 'decimal:2',
];
2. 403エラー時のビューが更新されました #26258
3. Intendedでリダイレクトする際のURLを指定するメソッドが追加されました #26227
今までもsessionで指定することで同じ動作が可能でしたが、setIntendedUrl()メソッドで簡単に指定可能になりました。
// before
session(['url.intended' => $intended]);
// after
app('redirect')->setIntendedUrl($intended);
4. OracleのORA-03114に関するエラーメッセージが追加されました #26233
詳しい変更については以下を確認してください。
Release v5.7.11 · laravel/framework · GitHub

[Laravel] 5.7.10がリリースされました
laravel/frameworkのバージョン5.7.10がリリースされました。更新された機能について確認していきます。
Added
1. Eloquent CollectionにloadCount()メソッドが追加されました #25997
取得済みのEloquent Collectionに関連するリレーションの数を取得することができます。
$events = Event::latest()->with('eventable')->paginate();
$groups = $events->map(function ($event) {
return $event->eventable;
})->groupBy(function ($eventable) {
return get_class($eventable);
});
$groups[Post::class]->loadCount('comments');
$groups[Comment::class]->loadCount('hearts');
return new EventIndexResponse($events);
テストも追加されていますので、気になる方はこちら
2. PostgreSQL 10+のIdentity columnsに対応しました #26096
3. assertSoftDeleted()メソッドが追加されました #26133, #26148
以下のようにレコードが論理削除済みかを確認できます。
$this->assertSoftDeleted($user);
// プライマリーキー指定
$this->assertSoftDeleted('users', ['id' => $user->id]);
4. apiResourceでexcept()メソッドを利用できるようになりました #26149
5. テスト時にmock()とspy()が追加されました #26171, b50f9f3
Mockeryなどの利用がとても簡単になりました。
$this->mock(Mailer::class, function ($mock) {
$mock->shouldReceive('send')->once();
});
$this->spy(Dispatcher::class, function ($mock) {
$mock->shouldReceive('dispatch')->andReturn(false);
});
6. uuidのバリデーションが追加されました #26135
5.6で追加されたStr::orderedUuid()などで生成したuuidに関するバリデーションです。
以下のように利用できます。
$request->validate([
'id' => 'required|uuid'
]);
7. Notificationのテスト時にlocaleを評価することができるようになりました #26205
詳しい変更については以下を確認してください。
Release v5.7.10 · laravel/framework · GitHub

[Laravel] Laravel Telescopeがリリースされました
アナウンスの通り、Laravel Telescopeがリリースされました。
Laravel TelescopeはMohamed SaidとTaylor Otwellによる新しいデバッグ・監視ツールであり、HTTPリクエスト、コマンドライン、スケジューラ、キューなど、アプリケーションに送られるすべてのリクエストを監視する一連のウォッチャーで構成されています。
現在Beta版ですが、Composerでの導入が可能です。
composer require laravel/telescope --dev
導入ができたらArtisanコマンドで適応させましょう。
php artisan telescope:install
php artisan migrate
/telescopeへ接続してみましょう。
(デフォルトでは/telescopeですが、config/telescope.phpで変更できます)
また、必要なLaravelのバージョンが5.7.7以上となっていますので注意しましょう。
Laravel Telescope
2018.10.24 16:00 追記
1. 情報取得時に419エラーが発生する
下記で解決できます。
419 HTTP status code · Issue #64 · laravel/telescope · GitHub
2. タイムゾーンの指定について
config/app.phpのtimezoneが適応される修正がdevelopで取り込み済みです。リリースを待ちましょう。
3. 必要なPHPのバージョンについて
現時点では7.1.3ですが、次回リリース時に7.2が必要になるかもしれません。

[Laravel Forge] AWSでのVPCの作成、Subnetの選択が可能になりました
タイトルの通り、ForgeでAWSでの操作が追加されました。
これまで、すべてのAWSサーバは設定可能なデフォルトのサブネットを持つ「Laravel Forge」VPCに配置されていました。
以前のリリースでVPCを選択する機能が実装されていましたが、動作が不安定だったようです。
(私も以前に試していましたが、VPCを選択するとプロビジョニングに失敗していました)
また、今回のアップデートでSubnetが固定だったものが選択可能になりました!
いずれもプロビジョニング時にドロップダウンでの選択ができます。
Laravel Forge - Instant PHP Servers

[Laravel] Laravel Telescopeが発表されました
Laracon AU 2018にて、Mohamed SaidとTaylor Otwellによる新しいデバッグ・監視ツールであるLaravel Telescopeが発表されました。
Laravel Telescopeはオープンソースとして近日中に公開される予定で、Composerによるインストールが可能です。
今までLaravelのデバッグツールではLaravel DebugbarやClockworkやLaravelが有名でしたが、これらに取って代わるアプリケーションです。
Laravel TelescopeはHTTPリクエスト、コマンドライン、スケジューラ、キューなど、アプリケーションに送られるすべてのリクエストを監視する一連のウォッチャーで構成されています。
これらのウォッチャーは、データベースクエリやその実行時間、キャッシュのヒットとミス、発生したイベント、送信されたメールなど、これらの要求とその関連データに関するあらゆる種類の情報を取得します。
Requests
Commands
Schedule
Jobs
Exceptions
Logs
Dumps
Queries
Models
Events
Mail
Notifications
Cache
Redis
詳しい内容については、こちらの動画で確認できます。
また、具体的な実装については以下のような応答がありました。
データはどこに保存されていますか?
StorageRepositoryインターフェースを継承する形で実装されています。デフォルトではデータベースとRedisを使用します。
オリジナルのデータストアの構築もインタフェース上のメソッドを6-7個の実装だけです。
どのくらいのデータを格納していますか?
プロダクション環境では多くのデータが破棄されます。
デフォルトでは一度に100件のデータが保有されます。
これらは全てオリジナルの設定が可能です。
スラックに通知することはできますか?
現在実装中で公開予定です。
現在使用中の監視ツールは必要無くなりますか?
必要かもしれない。Telescopeは簡単で扱いすいアプリケーションを目指しているので、あなたの監視ツールのように完璧では無いかもしれない。
タイムスタンプでフィルタリングできますか?
このアプリケーションはオープンソースなので十分に可能性はあります。
システムにどのような影響がありますか?
毎回1つのクエリしか実行されません。
本番環境では、何も挿入しないことがよくあります。
また、必要のないウォッチャーを無効にすることもできます。
1つのTelescopeで複数のアプリケーションを検査できますか?
はい。
それらの情報を同じデータベースに記録し、区別できるようにタグ/フィルタリングを付与するだけです。
システムの監視には外部ツールなどが必要でしたが、Laravel Telescopeがあれば全てシステム上で行えるようになるのでしょうか。
リリースに期待しましょう!

[Laravel] 5.7.9がリリースされました
laravel/frameworkのバージョン5.7.9がリリースされました。更新された機能について確認していきます。
Added
1. generatorコマンドでオリジナルのUserProviderが利用できるようになりました #25681
2. 401エラー時のviewが追加されました #26002
3. Inspiringに名言が追加されました #25968
4. Mailableのrender()メソッドがlocaleを評価するようになりました #25990
5. Notificationにいくつかのメタデータが追加されました 477273c
6. PendingResourceRegistrationクラスにMacroableトレイとが追加されました #25947
7. TestResponseクラスに assertSessionDoesntHaveErrors()メソッドが追加されました #25949, 3005706
8. presetコマンド実行時に--optionオプションでカスタマイズが可能になりました #25930
詳しい変更については以下を確認してください。
Release v5.7.9 · laravel/framework · GitHub