今回はMySQLのデータをLaravelで表示してみます。
membersというテーブルを作り、テストデーターが登録してあるので、そこからメンバー一覧(名前)を表示してみることにします。
・ルーターの設定
・コントローラーの設定
・ビューの設定
が主な作業内容になります。
LaravelとMySQLの準備は下記の記事を御覧ください。
[Laravel] MySQLのテーブル作成とテストデーター自動生成
コントローラー
artisanでコントローラーを作成
# php artisan make:controller MemberController
Controllerの編集
app/Http/Controllers/MemberController.phpの編集
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class MemberController extends Controller { public function index() { $members = DB::select('select * from members'); $data = ['title' => 'メンバーリスト', 'members' => $members]; return view('members.index', $data); } }
membersのDBをセレクトして、取得されるデータを$membersに代入。
$dataという変数を作り、そこにtitleとmembersの2つの値を設定。
これを/resources/view/members/indexで$dataとして受け取れるようにします。
Viewの作成
タイトルとメンバーリストを表示します。
<h1>{{ $title }}</h1> <ul> @foreach ($members as $member) <li>{{ $member->name }}</li> @endforeach </ul>
foreachを使ってデータがなくなるまで出力します。
ルーターの設定
routesのweb.phpに以下のコードを加えます。
「/member」にアクセスした時に Memberコントローラーのindexアクションを表示させる
Route::get('/member', 'MemberController@index');
データの表示
http://xxx.xxx.xxx.xxx:8000/memberにアクセス
これでLaravelでMySQLのデータを表示することができました。MVC(Model View Controller)の役割も学ぶことができます。