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

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

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

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

[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) <br> 詳しい変更については以下を確認してください。 Releases · laravel/framework · GitHub

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

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

laravel/frameworkのバージョン5.6.17がリリースされました。更新された機能について確認していきます。 Added 1. クエリビルダーのサブクエリを生成するメソッドが追加されました (#23818) 以下のメソッドでサブクエリを生成できます。 joinSub leftJoinSub rightJoinSub <br> 詳しい変更については以下を確認してください。 Release v5.6.17 · laravel/framework · GitHub

続きを読む
[Laravel] Optionalヘルパーの便利な使い方
#Laravel

[Laravel] Optionalヘルパーの便利な使い方

helperは、Laravelで導入されました。このクラスは、オブジェクトに存在しないプロパティを参照した場合に発生するエラーを回避することができます。 一般的な利用方法は以下のように任意のオブジェクトに対して行います。 ユーザー情報を持つが存在しなかった場合にも、各プロパティへの参照はが返却されます。 また、LaravelではBladeオペレータのが削除される予定です。 PHP7で実装されたオペレータを使って同等のことができますが、を使用することで冗長をなくすことができます。 下記の二つのコードは同じ動作を行います。 そして、Laravelではメソッドの第二引数にクロージャが渡せるようになりました。 これは第一引数のオブジェクトが存在する場合のみ、クロージャが実行されます。 をうまく活用することで、より見やすいコーディングが可能になるでしょう。 <br> Using the Laravel Optional Helper and the New Optional Closure - Laravel News

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

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

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

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

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

laravel/frameworkのバージョン5.6.14がリリースされました。更新された機能について確認していきます。 Added 1. メソッドが追加されました (#23711) Slack通知のレベルはデフォルトででしたが、これを明示的に指定できるようになりました。 2. メソッドが追加されました (@9c51e49) 使用しているデバイス以外のユーザーセッション情報を無効にすることができます。この機能を利用するためにはミドルウェアを利用している必要があります。 <br> 詳しい変更については以下を確認してください。 Release v5.6.14 · laravel/framework · GitHub

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

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

laravel/frameworkのバージョン5.6.13がリリースされました。更新された機能について確認していきます。 Added 1. コマンドが追加されました (@9fd1273, @2ab8acf) 2. コレクションの、メソッドがショートコードによるアクセスが可能になりました (#23560) 以下のようにエイリアスとして利用できます。 3. Bladeディレクテイブに、が追加されました (#23569) 認証方法によって分岐ができるようになりました。 4. 暗号化のレベルを設定できるようになりました (#23573, @d6e3ca9) 以下のようににてカスタマイズが可能になりました。 5. タグ付けされたキャッシュキーのとが可能になりました (#23578) 6. のテストが追加されました (#23594, @ca39449) 7. コレクションのメソッドがショートコードによるアクセスが可能になりました (#23608) 8. の更新を無効化出来るようになりました (#23667) 、共にを指定することで日付の挿入をスキップ可能になりました。 9. ヘルパーにコールバックが渡せるようになりました (#23688) 10. メソッドが追加されました (#23626) リレーションのレコードについてもが可能になりました。 <br> 詳しい変更については以下を確認してください。 Release v5.6.13 · laravel/framework · GitHub

続きを読む
[Laravel] EloquentモデルでJSON型のカラムを扱う方法
#Laravel

[Laravel] EloquentモデルでJSON型のカラムを扱う方法

MySQL 5.7ではカラム型にJSONを扱えるようになりました。もちろんLaravelのEloquentも対応しており、簡単に読み取りや検索を行うことができます。 実践的なアプリケーションでMySQLのJSON型を扱う方法について検証してみましょう。 テーブルの作成 JSON型を扱うテーブルのと、ファイルを作成します。 今回はというテーブルにユーザー情報を持つカラムがあるとします。 JSON型に対応していないバージョンの場合はTEXT型で作成しましょう。 モデルのプロパティに値を指定することで、データベースから取得した値を指定したフォーマットへ変更することができるようになります。 int (integer) real (float, double) string bool (boolean) object array (json) collection date datetime (customdatetime) timestamp カラムをJSONへキャストするように設定しておきましょう。 Factory (ダミーデータ) の作成 データの登録を簡単にするために、に対してのを作成しておきましょう。 カラムに対して、、、、が登録されるものとします。 を利用してダミーデータを登録できるようにします。 ※ にを追加することで日本語に対応したダミーデータの作成が可能になります。 が作成できたらを使ってダミーデータを登録しておきましょう。 コントローラー&Viewファイルの作成 登録されたArchive情報を取得するためのコントローラーを作成します。 対応するルーティングも追加しておきましょう。 Archive情報の一覧表示に加えて、カラムのJSON情報を検索できるようにしてみましょう。 以下のようなクエリを発行することで、JSON型のカラムに対しての条件検索ができます。 これをのORMで利用するには以下のように記述します。 により、に対してラップ処理が行われ、に置換されてJSON型の検索が可能になります。 テーブルの検索条件に使うパラメーターがの用に送られてくるとして、ここから必要な条件のトリミングを行いをもつコレクションを作成します。 以上をふまえて以下のようなコントローラーを作成します。 へを作成します。 Laravelに同封されているを利用して以下の用に作成します。 へアクセスすると一覧が表示されます。 laravel-eloquent-json01 検索フォームにと入力して検索していみます。 laravel-eloquent-json02 情報のにが入っている情報が出力されました。 (番外編) 検索にヒットした文字列をハイライトする Laravelとは関係ありませんが、検索した文字列をハイライトさせることで、より視覚的に判断することができます。 Javascriptのmark.jsを利用してマーキングを行います。 を読み込んでいる下に以下のコードを追加します。 検索したキーワードがハイライトされます。 laravel-eloquent-json03

続きを読む
[Laravel] ユーザーのアクセスログを保存する
#Laravel

[Laravel] ユーザーのアクセスログを保存する

アプリケーションへアクセスしたユーザーのアクセスログは何かと役に立つので取っておきたいと思う人が多いと思います。 Laravelには認証系のイベントが用意されており、ログインしているユーザーからのリクエストがあった場合にイベントが発火されます。このイベントを購読することで、アクセスログの取得が可能です。 保存先には色々考えられますが、オンラインのログサービスのへ保存する方法を紹介します。本来の利用方法とは異なるかもしれませんが、とても利便性の高いログ情報を取得することができます。 データベース等、保存先を変更する場合でもリスナーを変更すれば同じような動作が可能です。 パッケージの導入 Composerでをインストールします。 パッケージの詳細についてはGitHub - xzxzyzyz/laravel-logging-rollbar: Rollbar for Laravel Loggingを参照してください。 Rollbarの準備 のアカウントをお持ちでない場合は以下からサインアップしてください。無料プランも用意されており、5,000件/月まで利用できます。 Rollbar で任意のプロジェクトを作成しましょう。 laravel-access-log-to-rollbar01 作成が完了するとプロジェクトへのアクセストークンが発行されます。 laravel-access-log-to-rollbar02 Laravel側で利用するのはなので、この情報をファイルへ追記します。 へのchannelを追加することで、への 通知をLaravelのログとして利用できるようになります。 アクセスログを保存するリスナーの作成 以下の用なイベントのリスナーを作成しましょう。 今回はログのラベルとしてアクセスのあったURLを利用します。 作成したリスナーをへ登録します。 以上でアクセスログをへ保存する準備ができました。 次に実際にログを送信してみます。 アクセスログの確認 migrationを実行してユーザー情報の入れ物を用意しておきます。 認証周りを有効にしておきます。 へアクセスしてユーザー登録を行うのと同じですが、を利用してユーザーを作成します。 へアクセスして作成したユーザーでログインした後、へアクセスしてログを確認してみましょう。 laravel-access-log-to-rollbar03 でユーザー毎のログを確認できます。 laravel-access-log-to-rollbar04 ではユーザーのリクエスト値やサーバー情報、SESSION情報、利用ブラウザ等の様々なデータが格納でき、柔軟な検索が可能です。 とても便利なサービスですので、この機会に是非使ってみましょう。

続きを読む
[Laravel] ログの保存先にオンラインのRoolbarを使う
#Laravel

[Laravel] ログの保存先にオンラインのRoolbarを使う

Laravelのログは通常ローカルのディレクトリへ保存されますが、オンライン上のエラーモニタリングサービスのへ保存してみましょう。 Error Tracking & Crash Reporting for Software Developers - Rollbar <br> Laravelのバージョンで、Log周りに関する大きなアップデートがありました。 Loggingに形式が採用され、一つ、あるいは複数の場所へログを保存できるようになりました。 デフォルトで便利なドライバが複数用意されていますが、オリジナルのchannnelを作成してへログを送信します。 公式のパッケージ では公式に以下のLaravel用のパッケージが用意されています。 GitHub - rollbar/rollbar-php-laravel: Rollbar error monitoring integration for Laravel projects しかしこれはに対応したロギングドライバではなく、単に今までのログシステムの拡張として、全てのログをへ送信する実装です。 src/RollbarServiceProvider.php のbootメソッドを見てみましょう。 ログイベントのリスナーとして、へのログ送信を登録しています。 Auto-Discoveryに対応しているので、composerでパッケージの追加を行った時点でこのリスナーが追加されることになります。でも利用可能ですが、二重にログが保存されるでしょう。 カスタムドライバの実装 前述のサービスプロバイダを参考にして、Laravelのログchannelとして実装します。 channelの登録には、インスタンスを返すクラスを実装するだけです。 インスタンスの作成にはchannel名と、が必要ですが。 公式パッケージより、が利用できるので、これをとしてハンドラへ登録します。 あとはへchannelとして登録するだけでへのログが送信されます。 全ての実装はGitHubで公開していますので利用してみてください。

続きを読む