はじめに

Laravel でモデルの 作成/更新/削除 を検知してログ出力する方法

TL;DR

  • bootXXXX を持つ trait を作成して、ログ取得したいモデルに設定
  • beginTransaction などのログも合わせて取得すると正確性が増す
  • クエリログも合わせて取得すると where()->update() のようなケースも取得できる
  • 要件/環境 によってはボトルネックになりかねないので注意が必要
続きを読む

はじめに

Laravel でメール送信イベントを検知してログ出力する方法

TL;DR

  • MessageSent イベントを監視
    • app/Providers/EventServiceProvider.phpprotected $listen に設定
  • リスナ(イベントハンドラ)内でログを出力
    • getTo, getSubject で送信先、件名を取得可能
  • 要件/環境 によってはボトルネックになりかねないので注意が必要
続きを読む

はじめに

Laravel の Tinker(PsySH)、php -a で起動する PHP の対話シェル(インタラクティブシェル)などで、日本語が入力できない(※)場合の対処方法。

(※イメージとしては 'ほげ' って入力しても Enter を押して確定した瞬間に '' となるような動作)

TL;DR

  • 恒久的な対処としては libedit の更新
  • 一時的な対処としては Unicode デコード可能な関数を定義して利用
続きを読む

はじめに

Laravel で JavaScript を使うときのあれこれを調べた。

  • 機能やページ単位で JS ファイルを作成した場合、どのように取りまとめや読み込みを行う?
  • 本番環境向けのバージョニングはどうすればよい?

などなど。

TL;DR

  • Laravel Mix を使うと JS などのアセットを良い感じに扱える
  • webpack.mix.jsmix.js(), mix.version(), mix.browserSync() などを使う
  • Blade では mix('path/to/js') で読み込んだり、@push@stack で個別 JS を読み込むようにする
続きを読む

はじめに

Laravel には @if@csrf など、Blade ファイル中で利用可能な便利なディレクティブが用意されている。

「利用可能なディレクティブとして何があるかをソースから調べる方法」を整理した。
Bladeテンプレート - Readouble にも記載はあるが、一覧として見たかった。

なお、あくまでも「何があるか」なので各ディレクティブの使用方法などは特に書いてない。

TL;DR

  • Illuminate/View/Compilers/Concerns/ を調べる
    • grep, awk, sed あたりを使うと OK
続きを読む

Laravel で withCount と having を使って絞り込み



カテゴリー Programming

はじめに

Laravel で Has Many や Belongs To Many なリレーションを持つモデルに対して、withCounthaving を使って対応モデルの数を意識した絞り込みを行う方法。

使用イメージとしては、下記などが考えられる。

  • 顧客(customer) が n人以上いるお店(shop)を絞り込む
  • 部屋(Room)の収容可能人数と、利用者(user)数を比較して空きがあるものを絞り込む

TL;DR

  • Model::withCount('xxxx')->having('xxxx_count', '>', 1) のようにすれば良い
続きを読む

r17n


Softwear Engineer


Fukuoka