Xzxzyzyz.com
[Laravel] 5.5から5.6へ3分でアップグレードする方法
#Laravel

[Laravel] 5.5から5.6へ3分でアップグレードする方法

既存のLaravel5.5のアプリケーションを5.6へアップグレードする際のまとめです。 細かな変更方法については以下で確認することをお勧めします。 Upgrade Guide - Laravel ※ Laravel5.6の動作には、PHPバージョン以上が必要です。 依存パッケージのアップデート の以下の内容を変更します。 の依存指定をへ変更 の依存指定をへ変更 の依存指定をへ変更 また、公式パッケージの、、を利用している場合は下記も変更します。 の依存指定をへ変更 の依存指定をへ変更 の依存指定をへ変更 変更したらしましょう。 環境ファイルの変更 ファイルを変更します。 設定ファイルの変更 から以下の項目を削除しましょう。 を追加します。 を追加します。 Laravel5.6ではより一層便利なメソッドなどが増えました。積極的にアップデートしていきましょう!

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

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

Laravelのバージョンがリリースされました(2018-02-28)。更新された機能について確認していきます。 Added CollectionにsortKeys()、sortKeysDesc()メソッドが追加されました #23286 コレクションのキーを元に昇順、降順にソートできます。 Changed オブジェクトのプロパティが定義されていない場合にもoptional()メソッドがnullを返すようになりました #23267 <br> イベントにワイルドカードでリスナーを指定した場合の挙動が変更されました #23299 @82099cb <br> スキーマ作成時のmorphs、nullableMorphsメソッドがunsignedBigIntegerを作成するように変更されました #23320 Fixed v5.5の遅延JOBがv5.6で実行されない問題を修正されました #23287 <br> Queue::bulk()が適切なダミーJOBが生成されない問題を修正されました #23294 <br> presetがnoneの場合に元のパッケージファイルが残る問題を修正しました #23305 <br> orHavingメソッドの引数の問題を修正しました @e7f13be <br> Release v5.6.6 · laravel/framework · GitHub

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

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

Laravelのバージョンがリリースされました(2018-02-22)。更新された機能について確認していきます。 Added Eloquent Modelで発生したMassAssignmentExceptionのメッセージにクラス名が付与されるようになりました。 #23229 <br> メール送信の際に言語を指定できるようになりました。 #23178 a432d9e1fabe14cebecdf9d9637a3d4b8167b478 <br> Collectionにudiffメソッドが追加されました #23107 コールバック関数を使用して、コレクション内から、渡された配列に存在しない値を取得します。 Fixed orWhere()の引数の問題が修正されました e5042e10f940579b4457c99a51319887cd0a7b6f 33739f9887413f9855fb93a04211009256d5d904 <br> Release v5.6.5 · laravel/framework · GitHub

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

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

Laravelのバージョンがリリースされました(2018-02-21)。更新された機能について確認していきます。 Added メール送信の際のMessage-Idに任意の文字列を追加できるようになりました #23181 のキーに値を設定することでこの機能が有効化されます。 <br> カスタムログドライバを追加する場合に、コールバックをサポートしました #23184 <br> Blade::include()で読み込んだコンポーネントをエイリアスとしてDirectiveで利用できるようになりました #23172 以下のように使うことができます。 を使ってエイリアスを作成します。 登録されたエイリアスはDirectiveとして利用できます。 <br> NotificationにbroadcastType()メソッドが追加されました #23236 4227bd78d5ab2743e694bfd34784a5ccced20bef Changed FormRequestを作成する処理がServiceProviderからRequestへ移植されました b0c2459d7e55519d1c61927ab526e489a3a52eaf <br> ページネーションの矢印アイコンが変更されました #23127 <br> React Presetで使用するReactのバージョンがアップデートされました #23134 <br> エラー画面表示時に渡される値に空のErrorBagが追加されました #23139 <br> route:listコマンドの表示が最適化されました #23148 Action列が少し綺麗になりました。 <br> Carbonパッケージのバージョンをアップデートしました 201bbec1e2eec0ecc1dfeece05fbc4196058028a <br> BadMethodCallException時のメッセージが改善されました #23232 エラーメッセージにクラス名も含まれるようになりました。 <br> 日付に関するバリデーションに相対時間を指定できるようになりました #23211 、、、が使えるようになりました。 Fixed LogManagerが同じLoggerインスタンスを返すように修正しました #23118 <br> hash.driveがプロバイダとしてDIされない問題を修正しました #23114 <br> テストで2つのデータベーストランザクションを開始する際の問題を修正しました #23132 <br> tightenco/collectのバージョンが切り替わらない問題を修正しました #23147 #23153 #23160 <br> 無効な.envファイルを読み込んだ場合の例外が修正されました #23149 569507941594075c36893445dd22374efbe48305 <br> assertRedirectの問題を修正しました #23176 <br> Dropdownの問題を修正しました #23191 <br> Artisanで--forceオプションをつけた場合にファイルが上書きされる問題を修正しました #23230 Removed Bootstrap 3の余剰を削除しました #23129 <br> https://github.com/laravel/framework/releases/tag/v5.6.4

続きを読む
開発が捗るLaravelのヘルパー BEST 5
#Laravel

開発が捗るLaravelのヘルパー BEST 5

Laravelには様々なHelperが用意されていますが、その中でも特に便利なヘルパーを紹介します。 optionalヘルパー ヘルパーを使用すると、オブジェクトのプロパティにアクセスしたり、メソッドを呼び出すことができます。 指定されたオブジェクトが存在しない場合、プロパティとメソッドはエラーを発生させる代わりにを返します。 ヘルパーは、存在しない可能性のあるオブジェクトを使用する場合や、使用可能かどうかの判断が必要な場合のEloquentリレーションシップ内でネストされたデータを呼び出す場合に最適です。 datagetヘルパー ヘルパーを使用すると、ドット表記の配列またはオブジェクトから値を取得できます。 これはarrayget()と同様に機能します。キーが見つからない場合、省略可能な第3パラメータを使用してデフォルト値を指定できます。 ドット表記法で「ワイルドカード」()を利用することもできます。 ヘルパーを使用すると、同じ構文を使用して配列とオブジェクト内の要素を見つけることができます。このヘルパーの優れた点は、使用する変数の型を確認する必要がないということです。 strfinishヘルパー ヘルパーは、ある文字列が指定された文字で終わっているかを判定します。もし、指定された文字で終わっていない場合にはその文字が付与されます。 ヘルパーを利用すると、ファイルパスやURLなどを扱う場合に差異を吸収することができます。 str_beforeヘルパー ヘルパーは、ある文字列から指定された文字列より前方の文字列を返却します。 ヘルパーを利用すると、必要な文字列のトリミングが簡単になります。また、ヘルパーも用意されており逆の動作をすることもできます。 tapヘルパー ヘルパーは、任意の値との2つの引数を受け取ります。値はクロージャに渡され内部処理された後、任意の値として渡せれた値をそのまま返します。 を省略した場合、指定された値に対して任意のメソッドを呼び出すことができます。 この場合にも、呼び出したメソッドの戻り値は、そのメソッドが実際に返却する値に関係なく常にヘルパーに渡された値になります。 たとえば、Eloquent更新メソッドは通常、真偽値を返します。 ただし、更新メソッドの呼び出しをヘルパーで連鎖させることで、モデル自体を返すように強制することができます。

続きを読む
[Laravel] Bladeのhtmlをminifyする
#Laravel

[Laravel] Bladeのhtmlをminifyする

サイトの表示速度を高速化するための手段として、リソースファイルを圧縮してページ表示時のファイルサイズを小さくする方法があります。 Googleの検索ページのソースコードを見てみてください。呪文のように圧縮されています。 JavaScriptやCssのminifyはで行なっていると思いますが、Blade(Html)についてもminifyしてみましょう。 Blaedのminifyを行う 以下のパッケージをでインストールします。 Laravel HTMLMin インストール出来たら、へ追加します。 に関する設定ファイルを取得します。 取得したでBladeの圧縮を行うよう設定します。 それではデフォルトのページを開いてみましょう。圧縮が行われていることが確認できます。 ドキュメントにも記載がありますが、圧縮する際はを作成しますので、初回表示時以降はパフォーマンスにも影響ありません。

続きを読む
[Laravel] テーブルのプライマリキーにuuidを使う
#Laravel

[Laravel] テーブルのプライマリキーにuuidを使う

Laravel5.6で追加されたを使って、テーブルのプライマリキーにを使ってみましょう。 を編集して、テーブルのプライマリキーを変更します。 をを使うように編集します。 オートインクリメントフラグを変更して、Eloquentのイベントでidにを代入します。 準備ができたのでからユーザーレコードを作成してみましょう。 現時点 (v5.6.3) ではを利用する為にはパッケージが不足のでインストールします。 それでは気を取り直して。。。 を使ってユーザーが作成されました! 公式にも記載がありますが、新しく追加されたを使えば簡単に時系列にそったが作成できます! The Str::orderedUuid method generates a "timestamp first" UUID that may be efficiently stored in an indexed database column: https://laravel.com/docs/5.6/helpers#method-str-ordered-uuid

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

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

先日laravel 5.6がリリースされました。新しい機能や修正点について確認しましょう。 General のバージョンを使うようアップデートしました #22450 <br> のバージョンを使うようアップデートしました #22754 #22494 25559cd 12d789d <br> Contractにが追加されました #2134 <br> がを使うようアップデートしました #21637 Artisan Console コマンドが廃止されました #20851 <br> 実行時にが出力されるようになりました #21204 <br> コマンドが追加されました #21391 を実行することで、現在のマイグレーションの情報を確認できます <br> メソッドの第3引数にが追加されました #22463 <br> コマンドにオプションが追加されました #22852 dcc6123453e792084d3eda186898ea7a1f536faa オプションを使用することで、マイグレーションファイルを相対パスで指定できます <br> コマンドにオプションが追加されました #22996 dcc6123453e792084d3eda186898ea7a1f536faa オプションを使用することで、API用のコントローラー(index, store, show, update, destroy)が作成できます Authentication を使ってパスワードリセット時の送信メールをカスタマイズできるようになりました 6535186b0f71a6b0cc2d8a821f3de209c05bcf4f <br> メソッドが追加されました 6d8e53082c188c89f765bf016d1e4bca7802b025 メソッドを利用して、現在適用されているポリシーを取得できます Blade Templates とディレクテブが追加されました 5f1984421af096ef21b7d2011949a233849d4ee3 #22912 今までやと記述する必要があったものがディレクティブになりました。 <br> メソッドを使ってカスタムディレクティブが登録できるようになりました #22796 7c3ba0e61eae47d785d34448ca8d1e067dee6af7 より便利にコンポーネントを利用するためにメソッドを利用してディレクティブとして名前をつけることができます。 <br> のdoubleencodeがデフォルトで'true'になりました 7c82ff408432c56a324524712723a93df637936e 今まではメソッドがこの役割を果たしていましたが廃止され、メソッドとメソッドが追加されました。 Laravel5.6では、Bladeとヘルパーがデフォルトで特殊文字を二重にエンコードします。これにより、基礎となるのデフォルトの動作に揃えられます。 以前のダブルエンコーデング防止の動作を維持したい場合はを利用します。 Broadcasting 購読するチャンネルをクラスとして渡せるようになりました #22583 434b348c5dda1b04486ca6134671d83046bd5c96 043bd5e446cf737299476ea3a6498483282a9e41 Cache からの引数が削除されました #22202 Collections メソッドにを指定しなかった場合の挙動が修正されました #21854 <br> メソッドにオペレーターの指定ができるようになりました #22380 これによって、引数がから、ととへ変更されました。 <br> のパフォーマンスが改善されました #22774 c09a0fdb92a4aa42552723b2238713bc9a9b1adb <br> がキーの配列のみで実行可能になりました #22814 Database マイグレーションのとメソッド実行時に作成されるインデックスの命名規則が変更されました #21693 <br> PostgreSQLでコメントが利用可能になりました #21855 #22453 <br> タイプのカラムを使用する際の挙動が変更されました #22109 9a3d71da2278b5582d3a40857a97a905f26b901d <br> メソッドで重複したテーブルプレフィックスが防止されるよう修正されました #22340 #22781 <br> で複数レコードに対するメソッドが利用可能になりました #22366 <br> で実行された複数のクエリの中にサポートされていないメソッドがある場合に例外が発生するようになりました #22364 #c877cb0cdc44243c691eb8507616a4c21a28599f <br> メソッドでオペレーターが省略可能 (=) になりました #22378 <br> Queue利用時のデータベーストランザクションの挙動が変更されました #22433 <br> メソッドが追加されました #22446 を使用して複数の条件を一度に指定することができます。 <br> Pivot Modelのシリアライズが修正されました #22786 8fad785de66ffaa18e7d8b9e9cd7c4465e60daac 351e3b7694a804e8d6a613288419ccabd22bc012 <br> でが投げられるようになりました #22948 Eloquent Queue登録時に関連モデルの内容もシリアライズ可能になりました #21229 <br> 関連モデルがポリモーフィックの場合に内部キーを指定可能になりました #21310 <br> メソッド実行時に内容が同期されるようになりました #21905 <br> 発生時のメッセージが変更されました #22565 <br> がpublicに変更されました #22618 <br> が追加されました 641d0875a25ff153c4b2b7292b1d6c4ea717cb66 <br> Pivotレコード作成時に、自身のが正常に指定されるようになりました a433ff8a9bcd88ddfe2335801a15c71b4d1a0a3a <br> メソッドが追加されました #22867 が追加され、デフォルトの値を指定できます。 <br> Eloquent Eventにが追加されました 497a90749312b0b75fc185246c94e6150a502773 <br> メソッドが追加され、登録されていないfactoryが呼び出された場合に例外が発生するようになりました #22936 <br> 一部のクラスの命名が変更されました #22969 aad6089702a2bbe89b6971b3feb3e202fea9f4d9 <br> 日付形式へのキャスティングフォーマットをカスタムできるようになりました #22989 1f902c84b25f8799cc4f781ad549158db4167110 Eloquentのdateとdatetimeのキャストフォーマットを個別に指定することができます。 Hashing 暗号化方式にが追加されました #21885 68ac51a3c85d039799d32f53a045328e14debfea #22087 9b4648523debeb6c8ef70811d778b9be64312bd3 Helpers メソッドが引数がの場合にを返却するようになりました #21745 <br> の戻り値のソート順が親クラスを優先するようになりました #22537 <br> とメソッドが追加されました 3d39604bba72d45dab5b53951af42bbb21110cad はタイムスタンプをベースとしたUUIDを生成し、データベースのインデックスキーなどに効率よく利用できます。 Logging ログの出力方法が大幅に変更されました #22635 106ac2a7a1b337afd9edd11367039e3511c85f81 7ba0c22133da7ca99d1ec1459630de01f95130c1 03f870cb0b0eefde363b8985843aba68446a407c e691230578b010fe753f1973d5ab218a6510c0e9 新しくが追加されました。 新しいLoggingはメッセージを複数のハンドラへ送信できるを用意しています。 <br> のラベルにアプリケーション名 (APPENV) になりました #22267 Mail イベントのプロパティにが追加されました #21804 に値を渡すことで、メッセージに追加の情報を付与することができるようになります。 <br> メッセージ作成時のの実行順序がの前に変更されました #22995 <br> メール内容にHTMLの文字列を渡せるようになりました #22809 Notifications メソッドを利用して通知クラスを指定可能になりました #22289 Queues contractにとメソッドが追加されました #21303 <br> メソッドが削除されました #21901 <br> のQueueでblocking popが指定可能になりました #22284 dbad05599b2d2059e45c480fac8817d1135d5da1 59234169c3b3b7a7164fda206778224311e06fe2 Requests が明確なContent Typeでない場合にを返すようになりました #22506 3624d2702c783d13bd23b852ce35662bee9a8fea <br> メソッドが追加されました e546a5b83aa9fb5bbcb8e80db0c263c09b5d5dd6 <br> メソッドの引数に配列が指定可能になりました #22952 Responses クラスにとのパラメーターが追加されました #21553 <br> Modelで新しいレコードが作成された時にのステータスコードを返却するようになりました #21625 <br> クラスでオリジナルのJsonResponseを指定できるようになりました #22455 <br> メソッドが追加されました #22777 <br> がの場合にセキュアなセッションが許可されるように変更されました #22812 Routing ミドルウェアが追加されました #22389 f6f386ba6456894215b1314c0e33f956026dffec df06357d78629a479d341329571136d21ae02f6f <br> で任意の上限が指定可能になりました #c9e61007d38f0cd5434551ebd7bf9c2a139f4e61 ミドルウェアの引数でを直接指定することができます。 Service Container 登録時のサービスプロバイダにおけるバルクバインディングのサポート #21961 81e29b1f09af7095df219efd18185f0818f5b698 Support メソッドが引数がの場合に例外を投げるようになりました #22018 <br> contractにととメソッドが追加されました #22958 #22986 <br> Paginatorが追加されました c919402d5847830c1b2a39529cac90251f838709 Bootstrap 3のページネーションを利用する場合はを使用します。 Task Scheduling マルチサーバーでのCron実行スケジュールが追加されました #22216 6563ba65b65106198095f1d61f91e0ec542e98dd この機能はCache Driverにかを指定している場合にのみ利用できます。 Validation メソッドでMimeTypeがのSGVが許可されるようになりました #21390 <br> メソッドがに名称変更されました 33d864240a770f821df419e2d16d841d94968415 Testing を使用するようになりました #23005 <br> Json Helper使用時に特定のキーを指定可能になりました #22489 <br> トレイトでトレイトを利用するようになりました #22596 <br> とメソッドが追加されました #22915 #23038 <br> <br> https://github.com/laravel/framework/releases/tag/v5.6.0

続きを読む
[Laravel] パスワード変更時に他のデバイスでログインしているアカウントをログアウトさせる
#Laravel

[Laravel] パスワード変更時に他のデバイスでログインしているアカウントをログアウトさせる

Laravelの認証システムを利用していて、パスワード変更時に他のデバイスでログインしているアカウントを強制的にログアウトさせたいと思ったことはありませんか? この問題を解決するために移行のバージョンにはミドルウェアが実装されています。 から抜粋 (デフォルトではコメントアウトされていて無効になっています) 使い方 のコメントアウトを外すだけです。 それだけでパスワード変更時に他のデバイスでログインしているアカウントを強制的にログアウトさせることができます。 仕組み のメソッドを見ていきましょう。 ユーザーがまだ認証されていない場合 (メソッドでログインを試みる) や、セッションが無効な場合 (APIなど) にはミドルウェアを通過します。 Laravelの認証システムではの機能が標準で用意されています。 この仕組みはブラウザのCookieを利用し、Cookie情報の中に暗号化したユーザーの認証情報を保持しています。 ユーザーの識別番号 (ユーザーID等) rememberトークン ユーザーのハッシュパスワード ここではCookieからパスワードハッシュを取得し、現在のユーザーのパスワードハッシュと比較します。一致しない場合(ユーザーがパスワードを変更した)、認証されたユーザーをログアウトします。 セッションにパスワードハッシュがない場合、認証されたユーザーのパスワードハッシュがセッションに格納されます。次の部分ではなぜそれをするのか説明します。 セッションに保存されているパスワードハッシュが認証されたユーザーのパスワードハッシュと一致しない場合(ユーザーがパスワードを変更した)、認証されたユーザーをログアウトします。 ここでは、パスワードを変更した後でも、他のデバイスでのログインセッションは継続しています。 最後に、リクエストが終了し結果を返す前に、セッションにパスワードハッシュを保存します。 もう一度やり直す理由は、ユーザーがそのリクエスト内でパスワードを変更した可能性があり、その結果新しいパスワードハッシュが生成される可能性があるからです。 パスワードハッシュを保存していないと、パスワードを変更した後にシステムからログアウトさせられます。 このようにミドルウェアは、セッション認証を利用し、ユーザーのパスワードが変更されるたびにシステムからログアウトされます。 また、ブラウザに残っている古いCookie情報からのログインも無効になります。

続きを読む
[Laravel] Heroicons UIを使う
#Laravel

[Laravel] Heroicons UIを使う

Heroicons UIには、Webサイトで利用するアイコンが揃っています。 今回はsvgのアイコンをLaravelのBladeで表示させます。 Heroicons UIのダウンロード 以下のリポジトリからソースコードをダウンロードして、へ配置します。 sschoger/heroicons-ui フォルダへ配置したので、以下のようなHTMLでアイコンの表示が可能になりました。 Blade SVGのインストール で以下のパッケージをインストールしてください。 adamwathan/blade-svg Blade SVGパッケージは、インラインSVGまたはSVGスプライトを使用するための新しいディレクティブを追加します。 詳しい使い方については readme.md を参照してください。 へ追記します。 を以下のように記述します。 Bladeテンプレートを変更する を変更します。 (Laravelインストール時にトップページで表示されるファイルです) サーバーを起動して確認してみましょう。 laravel-heroicons-ui01 SVGアイコンが表示されました! また、以下のようなを追加してみましょう。 laravel-heroicons-ui02 SVGアイコンの色が変わりました! 最後に Heroicons UIのチートシートです。(画像) laravel-heroicons-ui03

続きを読む