今回はLaravelでコントローラーからモデルを介してデータベースにアクセスするところまでを作ります。
https://github.com/takishita2nd/hotel-mng
まずは、モデルにアクセスして、アレコレするクラスを作成します。
ここでは、repositoryとしていますが、特に名前に決まりはありません。
<?php namespace App\Repository; use App\Model\ReserveManagement; class RegisterManagementRepository { // 予約一覧を取得する public function getList() { return ReserveManagement::all(); } }
今回はリスト取得だけの機能だけ実装します。
これをコントローラーで使用します。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Repository\RegisterManagementRepository; class RegisterManagementController extends Controller { protected $registerManagement; /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('auth'); $this->registerManagement = new RegisterManagementRepository(); } /** * Show the Register. * * @return \Illuminate\Http\Response */ public function index() { return view('register.index', ['registerLists' => $this->registerManagement->getList()]); } }
Laravelにはサービスコンテナという機能があるようですが、今回はシンプルにコントローラーのコンストラクタでrepositoryをインスタンス化します。
Viewはシンプルに名前を一覧表示するだけです。
@extends('layouts.app') @section('content') <div class="container"> <div class="row"> <div class="col-md-8 col-md-offset-2"> <div class="panel panel-default"> <div class="panel-heading">予約一覧</div> <div class="panel-body"> <table> @foreach ($registerLists as $list) <tr> <td>これは {{ $list->name }} ユーザーです。</td> </tr> @endforeach </table> </div> </div> </div> </div> </div> @endsection
最後にルーティングを追加します。
Route::get('/', function () { return view('welcome'); }); Auth::routes(); Route::get('/home', 'HomeController@index')->name('home'); Route::get('/management', 'RegisterManagementController@index');
これで、ログイン状態で
http://localhost:8000/management
にアクセスすると、こんな感じで表示されました。
これでモデル・コントローラー・ビュー間のやり取りができるようになりました。
次は、CURD機能を一通り作成してみようと思います。