はじめに

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) のようにすれば良い
続きを読む

はじめに

Laravel の Form::select で空の選択肢ありのセレクトボックスを出す方法をまとめた。

TL;DR

続きを読む

Laravel の実行環境を確認する方法



カテゴリー Programming

はじめに

Laravel の実行環境を確認する方法をまとめた

TL;DR

  • app('env'), app()->environment(), App::environment() で現在の実行環境(文字列)の取得
  • app()->environment('xxxx'), App::environment('xxxx') で指定値との一致確認(bool)
    • 引数は複数指定可(どれかと一致すれば true)
  • isLocal()runningUnitTests() なども利用可能
  • view ファイルでは カスタム if 文 を定義して使うのがよい
続きを読む

Laravel で PDF ファイルをブラウザで開く



カテゴリー Programming

はじめに

Laravel で PDF ファイルをブラウザで開く方法を整理した。

PDF ファイル自体は Laravel が動作するサーバ内だったり、S3 だったりに置いてある想定。

TL;DR

  • Storage::disk()->get() で PDF ファイルを取得
  • response に PDF ファイルを設定
  • headerContent-type: application/pdfContent-disposition を指定
続きを読む

Laravel で CSV ファイルから DB seed する



カテゴリー Programming

はじめに

Laravel で CSV ファイルをもとに DB seed する方法を整理した。

TL;DR

  • SplFileObject で読み込んで foreach で 1行ずつ処理
    • 1行目はヘッダ行 = DB カラム名
  • ヘッダ行とデータ行を array_combine で合成
  • 合成した配列を使ってレコードの 検索/作成/更新 を行えば OK
  • Bulk insert/update には未対応なので、大量データの処理には向かないかも
続きを読む

Laravel で @section がある場合のみ HTML を表示



カテゴリー Programming

はじめに

Laravel で @section の設定がある場合のみ HTML を表示する方法を整理した。

例えば「共通的に使うので、レイアウトファイルにパンくずリストを定義したい」けど、「パンくずリストの表示指定が無いページでは、パンくずリスト自体を表示したくない」のようなケース。
※わかりやすい例が思いつかない。

TL;DR

  • @hasSection を使う
  • 複合条件の場合は @ifView::hasSection を組み合わせて対応
続きを読む

r17n


Softwear Engineer


Fukuoka