はじめに

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 用のロジックを分離できて便利
続きを読む

はじめに

Git を使った開発をしていて composer.lockcontent-hash でコンフリクトが発生した時の解決方法のメモ。

TL;DR

  • composer.lockcontent-hash のコンフリクトは以下で解決できる
    • content-hash のどちらかを残す
    • composer update --lock を実行
続きを読む

はじめに

PHP ファイルを Git リポジトリに登録(commit)する時に、PHP-CS-Fixer で自動整形を必須にする方法を調べた。

.git/hooks/pre-commit でも実現できるが、できればチームメンバー内で共有したい(git clone (してゴニョゴニョ)するだけで使えるようにしたい)ので、もう少し突っ込んで調べてみた。

TL;DR

  • husky + lint-staged + php-cs-fixer でコミット時の自動整形を実現可能
  • husky を使うと、package.json で クライアントサイドの Git hooks(pre-commit など)を利用できる
  • lint-staged を使うと、ファイル種別ごとにコマンドを実行できる
  • husky + lint-staged で、*.php の commit 時に php-cs-fixer を実行する
続きを読む

r17n


Softwear Engineer


Fukuoka