Laravel
問題 以下のように複数のIDを指定して一括で更新したい場面がありました。 $divIds = Div::where('hoge_flg', true)->select('id')->get(); User::whereIn('div_id', $ids)->update(['hoge_flg' => true]); ただ、上記のように書くと2回クエリが発行されるの…
Sail インストール前だと Docker イメージのビルドがこける これは開発環境の初期構築時のみに発生する問題です。 Laravel Sail 環境で Sail 本体がインストール前、つまり composer install 実行前だと以下のようなエラーが出て Docker イメージのビルドが…
ある日 Telescope 上で同じクエリが数十件発行されているリクエストを見つけて驚きました。 コードを追ってみるとどうやらモデルのアクセサでリレーションが呼ばれていることが原因のようでした。 そもそもそういうコードを書くな、ということなのでしょうが…
現在のプロジェクトでは CI でテストのジョブを分散させるために PHPUnit の設定ファイル(デフォルトだと phpunit.xml )が複数あります。 そのため、以下のようなことを同時にやりたい場合が発生します。 php artisan test --parallelでテストを並列実行する…
テストで下記のようにデータベースの中身を確認するパターンよくあると思います。 $this->assertDatabaseHas( 'm_user', // テーブル名を文字列で指定 [ 'id' => $user->id, 'user_name' => $user->user_name, ]); ただ、テーブル名を文字列で指定するのって…
概要 CI での PHPUnit で行う自動テストで並列化オプションを有効にしたらテストが早く終わるようになりました。 ローカルではもちろん使っていたんですが CI でも有効したらいいじゃんと気づいたので有効しました。 並列化オプション parallelオプションで…
結論 マイグレーションの圧縮をしても速度はほぼ変わりませんでした。 というかプロジェクトの CI 環境では遅くなりました… もちろん、うちの環境では、という話なのでマイグレーションファイルの数や内容によっては早くなることも十分あると思います。 一例…
状況がピンポイントすぎるのですがたまーに有り得そうだなと思い、自分の備忘録も兼ねて記事を書きました。 いろいろなテーブルに対して異なる条件で withCount を大量に行ったため、処理が重く画面が表示できない(リクエストがタイムアウトする)状態だった…
記事はたくさんあるんですがコードを見てへ~となったのでメモです。 あとうちのプロジェクトで実装している簡易ホワイトリストの実装も。 概要 プロジェクトではログイン処理がN分内にM回試行されると一時的なロックをかけるようにしています。(もちろんセ…
目的 フロントエンドで使用する環境変数を環境ごとに変えたいため、ビルド前に環境変数をセットするのが目的です。 Laravel Mix を使うと頭に MIX が付いている環境変数をフロントエンドと共有できますが、当然フロントエンドのビルド時点で設定されている必…
Laravel で API を実行するために Http ファサードを使ったのですがエラー判定でちょっと躓いたのでメモです。 レスポンス前後でエラーを出し分ける レスポンスの成否判定に便利な failed メソッドがあります。 下記に書いてあるとおりステータスコード 400 …
Laravel のバージョンを 5.X => 8.X にアップデートした際に FormRequest のバリデーションルールの仕様が微妙に変わっていてテストがコケました。 2点だけですがせっかく調べたので書き残しておきます。 どこを調べたのか ドキュメント見ても1行でさらっと…
Laravel にはディレクトリごと中身のファイルが削除できるdeleteDirectoryメソッドがあります。 ファイルストレージ 8.x Laravel deleteDirectory メソッドを使用して、ディレクトリとそのすべてのファイルを削除できます。 ドキュメントにもこのように書い…
Laravel で「ファイルをダウンロードした後はそのファイルは削除」する処理を実装したときにテスト方法にちょっと手間取ったのでメモです。 前提 Laravel では以下のように書けばファイルをダウンロード後、そのファイルを削除してくれます。 return respons…
Laravelでモデルにリレーションを設定して、withメソッドでその参照先を引いてきてくれる機能、Eager Loadingっていうんですね。 laravel.com これを複数設定していたり、参照先で引いてきた先でもさらにリレーションが設定してあって(ネストでいいんですか…