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 を組み合わせて対応
続きを読む

はじめに

davejamesmiller/laravel-breadcrumbs を使って、Laravel でパンくずリストを作成する方法を調べた。

TL;DR

  • composer require davejamesmiller/laravel-breadcrumbs でインストール
  • routes/breadcrumbs.php でパンくずリストの定義
    • リスト名、親階層、表示内容とリンク先 を指定
  • Breadcrumbs::render('list_name') でパンくずリストの描画
    • @section, @yield と組み合わせると便利
続きを読む

はじめに

Apache2 + PHP でウェブサーバを立てている状況で、非公開ディレクトリ(パブリックでないローカルのディレクトリ)の画像を読み込んで表示する方法を調べた。

※「画像は表示したいが、画像ファイル自体は公開ディレクトリに格納したくない」のような特殊なケース

TL;DR

続きを読む

Laravel で Enum (with BenSampo/laravel-enum)



カテゴリー Programming

はじめに

BenSampo/laravel-enum を利用して、Laravel で Enum を使う方法を整理した。

※機能が豊富なので、自分が使った範囲のみ。

TL;DR

続きを読む

はじめに

Laravel で 全角カタカナ・半角英数記号 に変換しつつバリデーションする方法について整理した。

要件としては下記。

  • バリデーションの前にデータを変換
    • 「全角かな・半角カナ」→「全角カナ」
    • 「全角英数記号」→「半角英数記号」
  • 変換したデータに対してバリデーション
    • バリデーション OK ならその後の処理も変換後のデータを利用
      • レコードの 作成/更新 とか検索とか

TL;DR

  • prepareForValidation でバリデーション前の処理
    • mb_convert_kana で全角・半角の変換
      • 変換できない文字もあるので注意
  • regex ルールで正規表現を使ってバリデーション
    • バリデーション通れば後はいつも通り
続きを読む

はじめに

Laravel でネストした構造(リレーション)において、取得するカラムを絞りつつ Eager Load する方法についてまとめた。

TL;DR

  • カラムの絞り込み: : の後に , 区切りでカラムを列挙
  • ネスト構造: . で繋げる
  • 上記の組合せ: with に渡す引数を分けて書く
    • with(['posts:title', 'posts.images:url'])
続きを読む

はじめに

/events?areas=1,2,3 のような URL で検索などの処理を行う際に、良い感じにバリデーションする方法を調べた。

※なるべく自前で各値が DB の値と一致するかを検証したくないよね、というお話。

TL;DR

  • prepareForValidation 内でデータを変更すると幸せになれる
  • getValidatorInstance でもいけるかも(試してない)
続きを読む

r17n


Softwear Engineer


Fukuoka