MySQLのデータベースにあらかじめテーブルおよびデータを用意しておき、Laravelにおいて一覧表示画面を作成します。
Laravelではデータベースを扱う方法として主に「DBクラス(DBファサード)」と「Eloquent(ORM)」の2つに分けられます。本記事ではDBクラスを利用し、よりシンプルな方法として、あらかじめ登録しておいたテーブルのデータを一覧画面として表示させます。
関連ページ
データベースの準備
ローカル環境に適当なMySQLを用意して下さい。本記事では、あらかじめsample01という名前のデータベースと下記のbooksテーブルを用意し、適当なデータも登録しておきます。
1 2 3 4 |
CREATE TABLE books ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, title TEXT NOT NULL )DEFAULT CHARACTER SET=utf8; |
1 |
INSERT INTO books (title) VALUES ("こころ"),("斜陽"),("ノルウェイの森"); |
関連ページ
Laravelでの準備
プロジェクトを作成します。
1 |
$ composer create-project laravel/laravel sample-project --prefer-dist |
関連ページ
Laravel入門 ルーティング[web.php][Route]
.envファイルの下記部分を適当に設定します。このファイルの設定がconfig/database.phpに反映されます。
1 2 3 4 5 6 |
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=sample01 DB_USERNAME=root DB_PASSWORD=pass |
一度設定した.envを再編集した場合は、キャッシュをクリアにするため下記コマンドを実行します。
1 |
$ php artisan config:cache |
web.phpに下記コードを追記します。
routes/web.php
1 |
Route::get('/book', 'BookController@index'); |
コントローラーを作成します
1 |
$ php artisan make:controller BookController |
下記のように編集します。
app/Http/Controllers/BookController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class BookController extends Controller { public function index() { $books = DB::select('select * from books'); $data = ['msg' => '本一覧', 'books' => $books]; return view('book.index', $data); } } |
テンプレートを作成します。resources/views/以下にhelloディレクトリを作成しindex.blade.phpを配置します。
resources/views/hello/index.blade.php
1 2 3 4 5 6 7 |
<h1>{{ $msg }}</h1> <ul> @foreach ($books as $book) <li>{{ $book->title }}</li> @endforeach </ul> |
http://localhost:8000/book
参照文献