【Laravel5】RouteServiceProviderで逆引き検索

【Laravel5】モデルの逆引き検索の仕組み

Wolfwood wrapped up

【Laravel5】モデルの逆引き検索の仕組み

こちらのサイトのまとめです。

Loose Ends and Wrapping Up – Laravel5 Fundamentals

GitHubにサンプルプロジェクトがあります。

ryo-ogata/learning-laravel-5

はじめに

最終回です。タグの名前から記事を逆引きする方法を紹介したいと思います。

/tagsのパスを追加する

  1. app/Http/routes.php

  2. app/Http/Providers/RouteServiceProvider.php

  3. app/Http/Controllers/TagsController.php

http://localhost:8000/tags/personalにアクセスしてみましょう。

RouteServiceProviderに1文を追加したことによって、TagsControllerではModel検索を行う必要がなくなりました。とても便利です。

タグを記事画面を表示する

さらに、タグから取得した記事一覧画面を作ってみます。

  1. app/Http/Controllers/TagsController.php
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    use App\Http\Requests;
    use App\Http\Controllers\Controller;
     
    use Illuminate\Http\Request;
    use App\Tag;
     
    class TagsController extends Controller {
     
        public function show(Tag $tag)
        {
            $articles = $tag->articles()->published()->get();
            return view('articles.index', compact('articles'));
        }
     
    }

これだけです!http://localhost:8000/tags/personalにアクセスしてみましょう。

【Laravel5】モデルの逆引き検索の仕組み
【Laravel5】モデルの逆引き検索の仕組み

タグpersonalをもつ記事の一覧画面が表示できました。(記事やタグが足りない場合には追加してみてください。)

TagsController@showメソッドでは$tag->articlesの記述だけで、TagモデルからArticleモデルへの検索が行われています。そこで取得したArticleモデルのリストをviewへ渡しています。

まとめ

記事につけたタグを、タグの名前から検索することができました。実際のアプリケーションを作る際にもモデルのリレーションや画面の使い回しなどは利用できそうです。

期間的にも記事数的にも長くなってしまいましたが、Laravel5.0の紹介もここで一段落しました。全記事の目次はコチラからどうぞ!他にもTipsなどあれば随時アップしていきたいと思います。

紹介に使ったソースコードは、GitHubのryo-ogata/learning-laravel-5にあがっていますので、参考にしてください。

最後まで読んでいただきありがとうございました!