#laravel
15件の記事
-
Laravel 13.38のPreventStaleDatabaseReadsで保存直後の古いデータ表示を防ぐ!stickyとの違いも
リードレプリカ構成のLaravelで「保存したのに一覧に出ない」を防ぐ、13.38.0の新ミドルウェアPreventStaleDatabaseReads。stickyとの違い、for()での秒数の決め方、ジョブで使うusingWritePdoまでまとめました。
-
PHP 8.6の部分関数適用でパイプ演算子のfn包みが消えた!RC3で試したclamp()とハマりどころ
11月19日リリース予定のPHP 8.6を、10月8日公開のRC3で試しました。部分関数適用(?と...)でパイプ演算子のアロー関数が消えた書き方、clamp()でmin・maxの入れ子をやめた話、引数が作成時に評価される落とし穴、上げる前に見ておきたい非推奨をまとめます。
-
Pest 5の--tiaで変わったテストだけ回す!Laravelのテスト待ちを減らした設定とCIで使わない理由
Pest 5のTia(テスト影響分析)を手元のLaravelプロジェクトで使い始めました。--parallel --tiaの動き、PCOVが必要なところ、CIでは使わずに--shardで実行時間ごとに分ける設定まで、v5.3.1時点の情報でまとめています。
-
EXPLAIN ANALYZEでLaravelの遅いクエリを実測!loopsの読み方とtoBase()の落とし穴
EXPLAIN の推定だけでは分からなかった遅いクエリを、MySQL の EXPLAIN ANALYZE で実測しました。actual time・rows・loops の読み方と、Laravel のクエリをそのまま流すマクロ、toBase() を挟む理由をまとめます。
-
Laravel 13のJsonApiResourceでJSON:API対応が標準に!includeでN+1にしないための組み合わせ
Laravel 13 から標準で入った JsonApiResource で、API のレスポンスを JSON:API の形にしてみました。make:resource --json-api の作り方、$attributes と $relationships の書き方、include と fields の動き、type 名と N+1 のハマりどころ、Spatie の Laravel Query Builder v7 との組み合わせまでまとめています。
-
RectorでLaravelの古い書き方を自動で直した話!--max-changesで少しずつPRにする運用
PHPの自動リファクタリングツールRectorとrector-laravelを、Laravel 13のプロジェクトに入れました。withComposerBasedでの設定、2.6.6の--filterと2.6.7の--max-changesでレビューしやすい量に分ける方法、CIでのdry-run、最初にハマった点まで書いています。
-
Larastan 3.12 のキュー用ルールを有効にしたら、トランザクション内の dispatch に afterCommit を付け忘れていた話
2026年9月の Larastan 3.12.0 で、キュー済みジョブ向けのオプトインルールが7つ追加されました。phpstan.neon での有効化の仕方、実際に引っかかった afterCommit の付け忘れ、既存プロジェクトに入れるときの baseline の使い方までまとめています。
-
Laravel の php artisan dev に乗り換えたら、composer.json の長い concurrently 行を消せた話
Laravel 13.16 で入った php artisan dev を、既存プロジェクトに入れてみました。起動する4つのプロセス、AppServiceProvider での追加・除外・並び順の設定、pail が出てこなかったハマりどころまで、13.34 時点の仕様でまとめています。
-
MySQLの使っていないインデックス、いきなり消さずに「不可視」で2週間様子を見てから消すようにした話
Laravel のプロジェクトで増えすぎたMySQLのインデックスを、sys.schema_unused_indexes で洗い出し、INVISIBLE にして様子を見てから削除する手順にしました。統計がリセットされる落とし穴や、外部キーで消せないときの対処も書いています。
-
PHP 8.5のパイプ演算子をLaravelで使ってみた!一時変数だらけの整形処理がかなり読みやすくなった話
PHP 8.5 で入ったパイプ演算子 |> を、Laravel の入力整形まわりで試してみました。書き方、最初につまずいたエラー、Str や Collection との使い分けまでまとめます。
-
Laravel 13のPHP属性でモデルとジョブの設定がスッキリ!#[Table]・#[Fillable]の書き方
Laravel 13 で使えるようになった #[Table] や #[Fillable]、ジョブの #[Tries] #[Timeout] などの PHP 属性。既存のモデルとジョブを書き換えてみた感想と、継承でハマった点をまとめます。
-
Laravel OctaneをFrankenPHPで入れたらAPIが別次元に速くなった話!メモリリークっぽい挙動の対処も
Laravelの標準PHP-FPM構成にLaravel Octane(FrankenPHP)を導入したところ、毎リクエストの再起動コストがなくなり、APIの応答速度がかなり改善しました。
-
Laravel SanctumでSPAのAPI認証を実装!401・419が出るときのチェックリストつき
LaravelでReact SPAのバックエンドAPIを作る際の認証にSanctumを使ったところ、Passportと比べてセットアップがかなり軽く、CSRFトークンの扱いも含めてスムーズに実装できました。
-
LaravelのN+1問題を解消したらAPIが速くなった話!with()以外の対策も
LaravelのEloquentでN+1問題が起きていたAPIにEager Loadingを導入したところ、クエリ数が大幅に減り、応答速度がかなり速くなりました。その手順と感想をまとめます。
-
Laravelのpaginate()が遅い原因はCOUNTクエリ!simplePaginate()で劇的に速くした話
商品一覧の遅さを調べる中で、Laravel の paginate() が発行する COUNT クエリが原因候補だと判明しました。simplePaginate() に切り替えた結果と考え方をまとめます。