今回は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機能を一通り作成してみようと思います。









