Xzxzyzyz.com
[Laravel] 5.7.19がリリースされました
#Laravel

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

laravel/frameworkのバージョン5.7.19がリリースされました。追加された機能について確認します。 クラスにメソッドが追加されました 使い方としてはのと同じです。 内部では以下のように展開されます。 <br> 詳しい変更については以下を確認してください。 Release v5.7.19 · laravel/framework · GitHub <br> また、のリポジトリにも大きな変更がありました。 がにアップデートされ、依存するパッケージの内容が変更されています。 Merge branch 'mix' of https://github.com/JeffreyWay/laravel into Jeff… · laravel/laravel@70532dd · GitHub では大きな変更があり、今までが依存していたパッケージ群が分離され、別途インストールする必要があります。 コンパイル速度の改善 npmインストールの速度の改善 へのアップグレード へのアップグレード へのアップグレード 実行時に依存するVendorパッケージが自動的に別ファイルに分離されるようになります Css Minify時にcssNanoのよるオプションの追加 プラグインの有効化、また毎にオプションが定義できるようになります JSの最適化、縮小エンジンがからに変更されました からに変更されました プロジェクトルートにファイルを作成することで、Mixを通じて提供されるデフォルトのBabelプラグインとプリセットを上書きまたは調整できます 以下がリリース情報ですが、一度目を通しておくことをおすすめします。 Release v4.0.0 · JeffreyWay/laravel-mix · GitHub

続きを読む
[Laravel] 5.7.18がリリースされました
#Laravel

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

laravel/frameworkのバージョン5.7.18がリリースされました。追加された機能について確認します。 バリデーションのメッセージが変更されました メソッドが追加されました の代わりになるメソッドで、よりも前にロードされます。 をキャッシュするファイルパスを指定できるようになりました ファイルにを指定できるようになりました。 <br> 詳しい変更については以下を確認してください。 Release v5.7.18 · laravel/framework · GitHub

続きを読む
[Laravel] 5.7.17がリリースされました
#Laravel

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

laravel/frameworkのバージョン5.7.17がリリースされました。追加された機能について確認します。 メソッドが追加されました データベースの内容をメモリに展開することなく、サブクエリから直接挿入できます。 メソッドが追加されました SQLのにの条件が指定できます。 トレイトにエラー処理が追加されました MariaDBへの接続が失われた場合のメッセージが追加されました。 Postgresの外部キーを追加する場合の検証をスキップするためのオプションが追加されました PostgresSQLのテーブルに外部キーを追加するには、既存のデータを検証するときにテーブルに排他アクセスロックが必要です。 メソッドを利用することで検証をスキップできます。 <br> 詳しい変更については以下を確認してください。 Release v5.7.17 · laravel/framework · GitHub

続きを読む
[Laravel] 5.7.16がリリースされました
#Laravel

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

laravel/frameworkのバージョン5.7.16がリリースされました。追加された機能について確認します。 、エラーページが多言語対応されました マイグレーション実行時にファイル名が指定できるようになりました 詳しい変更については以下を確認してください。 Release v5.7.16 · laravel/framework · GitHub

続きを読む
[Laravel] Laravel WebSocketsパッケージがリリースされました
#Laravel

[Laravel] Laravel WebSocketsパッケージがリリースされました

Laravel用にPHPで実装されたWebSocketサーバーLaravel WebSocketsがリリースされました。 システム上でWebSocketサーバーを利用するためには、代表的なをはじめ様々なライブラリやサーバーを構築する必要があります。 今回リリースされたLaravel WebSocketsはWebSocketサーバーとして必要な機能が全て実装されているので、これ一つで高性能なWebSocketサーバーを起動することができます。 作者はLaravelの有名なパッケージを多数開発しているBeyond CodeとSpatieのエンジニアによって作成されました。 サードパーティーのパッケージではありますが、Laravel SocialiteやLaravel Horizonといったオフィシャルパッケージと同様の扱いがされるでしょう。 Laravel WebSocketsの内容 Laravel WebSocketsはWebSocketを処理するための低レベルのパッケージであるRatchetを基盤として実装されています。 冒頭でも説明しましたが、Laravel WebSocketsをでインストールするだけで、他のライブラリや構築などは一切必要ありません。 PHPのみで動作し、コマンドで即座にWebSocketサーバーが起動します。 また、専用の管理画面も内包されており、ダッシュボード上でリアルタイムな情報が確認できます。 laravel-websockets-package01 チャートにはピーク時の接続数、送信されたメッセージ数、受信されたAPIメッセージ数など、WebSocketアプリケーションのメトリックの重要な情報を提供するリアルタイムチャートが搭載されています。 内部にはPusherのMessage ProtooclのMessage Protooclも実装済みであり、Pusherをサポートする既存のパッケージやアプリケーションは全てLaravel WebSockets上で動作します。 Laravelで用意されているLaravel Echoやその他WebSocketを利用するJavaScriptのライブラリとも互換性があります。 Private Channel、Presence Channel、APIでの接続などPusherが提供する全ての機能が利用可能です。 動画 サンプルや実装例 こちらからデモアプリケーションを確認できることに加え、ドキュメントサイトにも組み込まれています。 laravel-websockets-package02 また、サーバー監視サービスのOh Dear!ではすでに本番環境でLaravel WebSocketsを利用中とのことです。 Laravel WebSockets 🛰 * ★ Introducing laravel-websockets, an easy to use WebSocket server implemented in PHP - Freek Van der Herten's blog on PHP and Laravel

続きを読む
[Laravel] Eloquentでのサブクエリの有効な使い方
#Laravel

[Laravel] Eloquentでのサブクエリの有効な使い方

Eloquentを用いたリレーションテーブルにおいて、効果的なサブクエリの使い方を紹介します。 リレーショナルなテーブル扱う場合には問題は常に意識されるべきであり、を使ったクエリの削減は誰もが行なっているでしょう。 Laravelにおいてもメソッドを使うことで簡単にが行えますが、やの関係においてはサブクエリを使うことでパフォーマンスが改善され、システムの見通しがとてもよくなる場合があります。 要件 例として、ユーザーがログインした時にログイン履歴を残すシステムがあり、ユーザー一覧を表示するページで、ユーザー情報に加えて最終ログインデータを表示させるものとします。 | Name | Email | LastLogin | |---|---|---| | Adam Campbell | adam@hotmeteor.com | 2018-11-10 12:01 | | Taylor Otwell | taylor@laravel.com | - | | Jonathan Reinink | jonathan@reinink.ca | 2018-01-02 05:30 | | Adam Wathan | adam.wathan@gmail.com | 2018-11-20 07:49 | 準備 ログイン情報を保存するテーブルと、データベースを操作するモデルを作成しましょう。 以下がマイグレーションするテーブルのスキーマです。 usersテーブルはLarevelに同封されているものを使います。 また、は外部キーでログイン毎に履歴としてレコードが作成されるものとします。 次に、作成したモデルを関連付けます。 ログイン履歴の追加方法については省略しますが、イベントのリスナーとしてテーブルに追加される処理があるものとします。 Eager Loadingを使う方法 ただ単に最終ログインを表示さすことはとても簡単に実装できるでしょう。 この方法では50人のユーザーが表示された場合、合計51のクエリが実行されます。いわゆるにあたります。 この問題を解決するにはを使うことです。 関連するログイン情報をメソッドを使って取得しましょう。 これで発行されるクエリはと、それに関連するする2つになり問題は解決されました。 しかし、改善前と比べてメモリ消費量が増える場合があります。 ログイン履歴には平均して1ユーザー辺り250件の履歴が存在している場合、50ユーザー分のする場合には12,500件のレコードを取得することになります。 これはメモリの消費に加えて、各レコードをEloquentモデルとして初期化する時間もかかることになります。 上記した数字は例ですが、似たような状況で何百万ものレコードがロードされることもあるでしょう。 最終ログインを保持するカラムを用意する 対策の1つとして、専用の情報をデータベース上で保持することが考えられます。 ユーザーのログイン時にログイン履歴に加えて、テーブルの外部キーであるを更新するという方法です。 関連付けを行うメソッドをモデルに作成し、この情報のを行います。 これはとても有効な解決策の1つです。 しかし、キャッシュを頻繁に行うのは簡単ではないことに注意してください。 SubQueryを使う方法 この問題を解決する方法の1つがサブクエリを使う方法です。 サブクエリを使用すると、を行うクエリの中でに関する情報を扱うことができます。 Laravelにはメソッドを使うことでサブクエリの実行ができます。 この例ではを使わず、サブクエリを使って各ユーザの最終ログイン日を属性として取得しています。 実際に実行されているデータベースクエリを見てみましょう。 このようにサブクエリを使用すると、ユーザーページに必要なすべての情報を単一のクエリで取得できます。 この手法では、データベースクエリとメモリ使用量を最小限に抑えることができ、キャッシングを使わなくて済むので、パフォーマンスが大幅に向上します。 Macroable このようなサブクエリを使う場合の処理をマクロとして定義することもできます。 新しいaddSubSelectメソッドをクエリビルダに追加するために、AppServiceProviderに次のコードを記述します。 このマクロは次の処理が含まれています。 サブクエリに加えて、対象のテーブル情報を取得するためにを追加しています。これはLaravelでサブクエリを定義した場合にはが含まれないので必須です。 サブクエリは1つのみレコードを取得したいのでを指定します そして、サブクエリとして引数に渡したクエリを追加します このマクロを使ってコードを書き直してみましょう。 とてもスッキリして再利用まで可能になりました。 最後に この記事は以下のページを参考にサブクエリの使い方について説明しました。 元ページでは更にを使った例や、さらに詳しく説明されていますので是非ご覧になってください。 Dynamic relationships in Laravel using subqueries - Jonathan Reinink

続きを読む
[Laravel] 5.7.15がリリースされました
#Laravel

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

laravel/frameworkのバージョン5.7.15がリリースされました。追加された機能について確認します。 1. のバリデーションメッセージが追加されました へ追加されています。 2. バリデーションルールが追加されました リクエスト値が指定されたパラメータで始まっているかを検証します。(複数可) 以下はStripeの認証情報を検証するサンプルです。 3. リレーションにメソッドが追加されました BelongsToMany::getParentKeyName BelongsToMany::getRelatedKeyName HasManyThrough::getFirstKeyName HasManyThrough::getForeignKeyName HasManyThrough::getSecondLocalKeyName HasOneOrMany::getLocalKeyName MorphToMany::getInverse 4. にが付与されました をに直接渡すことができるようになりました。 詳しい変更については以下を確認してください。 Release v5.7.15 · laravel/framework · GitHub

続きを読む
[Laravel] 5.7.14がリリースされました
#Laravel

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

laravel/frameworkのバージョン5.7.14がリリースされました。追加された機能について確認します。 1. クラスにトレイトが追加されました 2. パスワードリマインダー、パスワードリセットのRouteを無効にできるようになりました システム上でユーザーにパスワードのリセットを許可しない場合に使用します。 の引数で指定できます。 3. エラー関連のviewファイルが取り込まれるようになりました コマンド実行時に、既存のviewファイルがへコピーされます。 4. クラスにリトライ回数とタイムアウトを指定できるようになりました 、にて指定可能です。 5. メール周りのログを別ファイルに出力可能になりました メール周りのトラブルは付き物ですが、ログが埋まってしまいがちです。 専用のを指定できるようになり、デバッグが容易になりました。 にドライバを追加します。 にとして専用のドライバを指定可能です。 6. 静的ファイルの配信URLが指定可能になりました 等を利用してアセットファイルの配信を行う場合にとても便利な機能が追加されました。 にとして配信元のURLを指定することで別ドメインとして利用可能です。省略した場合にはオリジナルのドメインで配信されます。 7. トレイトにメッセージが追加されました 8. コンソール実行中と判断するフラグが指定可能になりました に値を指定することでフラグが立つようになりました。 詳しい変更については以下を確認してください。 Release v5.7.14 · laravel/framework · GitHub

続きを読む
Laracastsが50%オフのセール中です
#Other

Laracastsが50%オフのセール中です

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

続きを読む
[Laravel] 5.7.13がリリースされました
#Laravel

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

laravel/frameworkのバージョン5.7.13がリリースされました。更新された機能について確認していきます。 Added 1. カスタムバリデーションルールでメッセージを配列で指定可能になりました #26327 2. に///メソッドが追加されました #26345 3. にメソッドが追加されました #26376, 8f7e647 4. にメソッドが追加されました #26351 5. にトレイトが追加されました #26351 6. を使用する際にも集計クエリが可能になりました #26365 以下のようなクエリに対してもで集計可能になりました。 <br> 詳しい変更については以下を確認してください。 Release v5.7.13 · laravel/framework · GitHub

続きを読む