Laravel Newsには良記事が満載なので、備忘録の意味合いも込めて、記事を簡単にまとめていこうと思います(翻訳ではないです)。
元記事
投稿日: 2018/04/16
タイトル: Leverage Eloquent To Prepare Your URLs
URL: https://laravel-news.com/leverage-eloquent-to-prepare-your-urls
まとめ
<a href="{{ route('users.show', $user) }}">{{ $user->name }}</a>
というviewによくあるコードを
<a href="{{ $user->url->show }}">{{ $user->name }}</a>
と、coolに書こうぜというものです。
中身はとても簡単で、routeを返すクラス(UrlPresenter)をUserモデルに持たせています。
感想
実装は簡単ですが、いろいろな箇所で出て来るrouteを呼び出しを簡潔に書けそうです。
Model生成時にUrlPresenterも自動生成できるようにしておけば、考えることが減りそうでよい。
その他
調べている最中、laracasts/Presenterというのを見つけました。
今回の記事の$user->urlはミューテタを使っていますが、リファレンスでは$user->first_nameを大文字にして返す例が載っています。
こういった処理をUserモデルではせずに、Userモデルに持たせたPresenterで行うことで、ModelとView(Presenter)を分けています。