ひでメモ

プログラムについて勉強したことを書きます。たぶん。

2023-01-01から1年間の記事一覧

【Laravel】whereIn メソッドで生成されるIN句の中にサブクエリを書く

問題 以下のように複数のIDを指定して一括で更新したい場面がありました。 $divIds = Div::where('hoge_flg', true)->select('id')->get(); User::whereIn('div_id', $ids)->update(['hoge_flg' => true]); ただ、上記のように書くと2回クエリが発行されるの…

Laravel Sail 環境で Sail をインストールする前だとイメージのビルドができない

Sail インストール前だと Docker イメージのビルドがこける これは開発環境の初期構築時のみに発生する問題です。 Laravel Sail 環境で Sail 本体がインストール前、つまり composer install 実行前だと以下のようなエラーが出て Docker イメージのビルドが…

yum で MySQL を最新ではない任意のマイナーバージョンへアップデートする

目的 アップデート作業時の最新は 5.7.41 だったのですが、これを 5.7.40 にしたいです。 $ mysql --version mysql Ver 14.14 Distrib 5.7.36, for Linux (x86_64) using EditLine wrapper アップデートできる MySQL のバージョン確認 まず yum でアップデー…

【MySQL】数字を含む文字列の数字だけでソートする SQL

MySQL で数字を含む文字列の数字部分だけでソートする SQL を書いたのでメモです。 やりたいこと log_1, log_2 のような文字列 + 数字の値を持つカラムで数字順にソートしたい場面がありました。 末尾の数字が1桁のみであればそのままソートできたと思いま…

GitLab CI でアクセストークンを使いリポジトリをクローンする

GitLab CI でアクセストークンを使いリポジトリをクローンするように変更したので手順のメモです。 元は SSH を使っており鍵の設定が煩雑そうでしたが、アクセストークンの発行・設定は10分くらいでできると思います。 アクセストークンを発行する メニュー…

【Laravel】モデルのアクセサでリレーションを呼ぶと N+1 問題になるときの回避方法

ある日 Telescope 上で同じクエリが数十件発行されているリクエストを見つけて驚きました。 コードを追ってみるとどうやらモデルのアクセサでリレーションが呼ばれていることが原因のようでした。 そもそもそういうコードを書くな、ということなのでしょうが…