検索結果をページネーション
「ページネーションのデータを変える」の続きです。検索画面を用意して検索結果をページネーションします。
「ページネーションのデータを変える」の続きです。検索画面を用意して検索結果をページネーションします。
L6以来のLTSという事で待望の(?)Laravel9がリリースされました。という事で早速installを試してみます。
例えば、User::paginate(5)で返されるデータは、@foreachでループできるゆえにコレクションと思いきや、そうでありません。
先日に作成した生SQL文の実行クエリの機能を使用しています。重宝していますが、SQL文が複雑になってくると括弧が多くなってきたりして、わかりづらくなってきます。PHPのコードやHTMLソースと同じようなもので、SQL文の整形の機能が必要です。探したらまさにそのパッケージありました。
以前にEloquentの出力のチャンキングを紹介しました。処理中のメモリーの使用量を減らすためのチャンキングですが、実行速度が遅いということでそれを改善する対策もこしらえました。3年前以上のことです。しかし、そのためのメソッドがすでにEloquentのメソッドに存在することに最近気づきました。
phpでは配列のデータをループするならforeachを使います。LaravelのCollectionでもforeachを使ってループできます。しかし、Collectionならeach()を使いましょう。
サイトのアクセスが増えてくると、ロードバランスを導入して複数の仮想マシンでウェブサーバーを立ち上げる必要性が出てきます。となると、必要になるのは例えば認証したユーザーのセッション情報を複数のマシンで共有すること。そこでredisの登場です。
「お客さんにメールが届かないのでどうかして?」というCSからの質問。見てみるとexample@yahoo.comであるところ、example@yahpo.comになっていたりします。たった1文字違いですが、会員登録してもこのためにメールが届かないばかりか、次回からは多分ログインもできません。もちろんお客さんの間違いですが、登録時にこれが通ってしまうというのは問題です。これをどうかしたいです。
Laravelのようなフレームワークが登場する以前は、誰しもSQL文を作成してmysqli_query()のような関数に引数として渡して実行していたものです。QueryBuilderやEloquentのORMなぞ聞いたこともない時代でした。その過去に戻るわけではないですが、それと同じこと、つまりSQL文を管理画面に直接入力して実行できないかと考えた次第です。
LaravelではFeatureテストが簡単に行えるように、便利なテスト用メソッドが用意されています。今回はそちらを使っていてハマってしまった意図せぬ挙動について紹介します。