はじめに
Laravel でネストした構造(リレーション)において、取得するカラムを絞りつつ Eager Load する方法についてまとめた。
TL;DR
- カラムの絞り込み:
:
の後に,
区切りでカラムを列挙 - ネスト構造:
.
で繋げる - 上記の組合せ:
with
に渡す引数を分けて書くwith(['posts:title', 'posts.images:url'])
Laravel でネストした構造(リレーション)において、取得するカラムを絞りつつ Eager Load する方法についてまとめた。
:
の後に ,
区切りでカラムを列挙.
で繋げるwith
に渡す引数を分けて書くwith(['posts:title', 'posts.images:url'])
/events?areas=1,2,3
のような URL で検索などの処理を行う際に、良い感じにバリデーションする方法を調べた。
※なるべく自前で各値が DB の値と一致するかを検証したくないよね、というお話。
prepareForValidation
内でデータを変更すると幸せになれるgetValidatorInstance
でもいけるかも(試してない)Laravelで「開始日時」と「終了日時」を登録する際に、日付と時刻の入力欄がそれぞれに用意されているようなケースで、「開始日時 < 終了日時」であることをバリデーションする方法。
追記: こっちのやり方使った方が良いかも。
Laravel でコンマ区切りのフォームデータを良い感じにバリデーションする
Laravel で有効期限付きの一次的な URL を生成してメールで送信する方法について調べた。
基本的には Laravel5.6で署名付きURL(時間制限付き)の実装が簡単に出来るようになったので試した - Qiita の内容通りで、+α として実際にメール送信(承諾/拒否)まで行っている。
temporarySignedRoute
で URL 生成now()->addXXXX()
で設定hasValidSignature
で URL の検証Laravel で (a OR b) AND (c OR d)
のように複合的な AND/OR 検索する方法について整理した。
where(fucntion($query))
を使う$query->where
や $query->orWhere
を使うLaravel の中間テーブルを使った多対多(belongsToMany
)の関係で、中間テーブルのカラムでソートする方法を調べた。
イメージとしては「ユーザー」と「サークル」があって、「ユーザー」は複数の「サークル」に所属可能、「サークル」には複数の「ユーザー」が所属。サークルへの加入時期(created_at
)でソートする、など。
withPivot
と orderBy
を組み合わせるwithPivot('created_at AS joined_at')
のように別名を付けると分かりやすいPHP, Laravel で null
の可能性があるケースでの便利なメソッドや演算子について調べたので忘れないようにメモ。
※Ruby の Safe Navigation Operator (ぼっち演算子) hoge&.name
とかのようなもの。
optional()
: optional($hoge)->name
とすると、$hoge = null
の時は null
が返ってくる??
: $a = $b ?? 'null だよ'
とすると、$b != null
の時は $b
、$b == null
の時は ??
の後の値が設定されるoptional($a)->name ?? '未入力'
のように組み合せて使うと便利Laravel で View 用のロジックを分離できるライブラリ robclancy/presenter の使い方について整理した。
composer require robclancy/presenter
でインストール