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 でもいけるかも(試してない)
続きを読む

はじめに

Laravelで「開始日時」と「終了日時」を登録する際に、日付と時刻の入力欄がそれぞれに用意されているようなケースで、「開始日時 < 終了日時」であることをバリデーションする方法。

追記: こっちのやり方使った方が良いかも。
Laravel でコンマ区切りのフォームデータを良い感じにバリデーションする

TL;DR

  • クロージャ内で日時データを組み立てて比較することで解決(暫定)
  • 他にも色々と試したけどダメだった
  • Laravel 歴が浅いので鵜呑みにしないこと
続きを読む

はじめに

Laravel で有効期限付きの一次的な URL を生成してメールで送信する方法について調べた。

基本的には Laravel5.6で署名付きURL(時間制限付き)の実装が簡単に出来るようになったので試した - Qiita の内容通りで、+α として実際にメール送信(承諾/拒否)まで行っている。

TL;DR

続きを読む

はじめに

Laravel の中間テーブルを使った多対多(belongsToMany)の関係で、中間テーブルのカラムでソートする方法を調べた。

イメージとしては「ユーザー」と「サークル」があって、「ユーザー」は複数の「サークル」に所属可能、「サークル」には複数の「ユーザー」が所属。サークルへの加入時期(created_at)でソートする、など。

TL;DR

  • withPivotorderBy を組み合わせる
  • withPivot('created_at AS joined_at') のように別名を付けると分かりやすい
続きを読む

はじめに

PHP, Laravel で null の可能性があるケースでの便利なメソッドや演算子について調べたので忘れないようにメモ。

※Ruby の Safe Navigation Operator (ぼっち演算子) hoge&.name とかのようなもの。

TL;DR

  • optional(): optional($hoge)->name とすると、$hoge = null の時は null が返ってくる
    • エラーにならない
  • Null 合体演算子 ??: $a = $b ?? 'null だよ' とすると、$b != null の時は $b$b == null の時は ?? の後の値が設定される
    • 三項演算子($a = $b != null ? $b : ‘null だよ’`)のようなもの
  • optional($a)->name ?? '未入力' のように組み合せて使うと便利
続きを読む

はじめに

Laravel で View 用のロジックを分離できるライブラリ robclancy/presenter の使い方について整理した。

TL;DR

  • robclancy/presenter を使うと簡単に Decorator パターンを実装できる
  • composer require robclancy/presenter でインストール
  • ちょっとした設定、XxxxPresenter クラスの作成、Model ファイルの編集だけで View 用のロジックを分離できて便利
続きを読む

r17n


Softwear Engineer


Fukuoka