Googleドライブの仕様が変わっていて「マイドライブ」で同期するローカルフォルダの変更に手間取ったお話
[2023/02/22]
Post と Comment (1対多の関係)を例にすると、
コントローラーからフツーに $posts を view に渡して…。
blade のループ内で
@forelse($posts as $post) <div>{{ $post->title }}</div> <div>{{ $post->comments()->latest('updated_at')->first()->format('Y/m/d H:i') }}</div> @empty <div>データが見つかりません</div> @endelse
てな感じ。
投稿(Post)の一覧をテーブルで表示したい。
その中のカラムに「最新のコメント日付」を入れたい。
って思っただけなんです。
SQL書いたら一瞬で終わるんですが、 Laravel のお作法でシュッと書くにはどうすれば…?と気になりまして。
調べても、
みたいな話ばかりで、なんだかかなり面倒。(いや、それほど大したことは無いんですけどね…。)
1対多や多対多のリレーション用に withCount() は用意されてるんですけど、 withMax() は無いんですよね…。
$post->comments() でリレーション先の Comment は取れてるんだから、なんとかならんものか?と…ずいぶん考えた結果、冒頭の結論に至ったのでした。
内部的な効率考えると、生のSQL書いた方が良いとは思うんですけどねー。
たまに「ぬぉっ!こんだけで済むのか!」ってエレガントな書き方を見つけて感動することがあるので、最近は「いかにコード量の少ない、すっきりしたソースになるか?」の方向に目が行っているのでした。
ディスカッション
コメント一覧
まだ、コメントがありません