Laravel7 DBクラスを利用して、DBと接続してテーブルの値を表示する

Laravel7 DBクラスを利用して、DBと接続してテーブルの値を表示する

Laravelでデータベースを利用する時に使用するクラス「DBクラス」の簡単な使い方を記述してます。ここでは、事前にテーブルを作成してレコードを表示するまでのサンプルコードを記述してます。

環境

  • OS windows10 pro 64bit
  • Composer 1.10.5
  • PHP 7.4.5
  • MariaDB 10.4.12
  • Laravel Framework 7.6.2

※windows10に Laravel のインストールはこちら
※windows10に Composer のインストールはこちら
※windows10に PHP のインストールはこちら
※windows10に MariaDB のインストールはこちら

テーブル作成

接続するDBにテーブルを作成しておきます。
ここではitemsテーブルというテーブルを作成してます。

CREATE TABLE if not exists items (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL ,
price INT(8) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
)

適当なデータも作成しておきます。

INSERT INTO items (NAME,price) 
VALUES ("item1",100),("item2",200),("item3",300);

コントローラー作成

まずはコントローラーを作成します。

php artisan make:controller ItemsController

app/Http/Controllers/ItemsController.phpが作成されるので、
ここでDBクラスを使用してitemsテーブルからレコードを取得します。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class ItemsController extends Controller
{
	public function index()
	{
		$items = DB::select('select * from items');
		$data = ['items' => $items];
		return view('items.index', $data);
	}
}

ビュー作成

次にレイアウト部であるviewを作成します。

resources\views内で「items」というフォルダを作成して「index.blade.php」を下記の内容で、新たに作成します。

<ul>
    @foreach ($items as $item)
    <li>商品名:{{ $item->name }} 価格:{{ $item->price }}</li>
    @endforeach
</ul>

{{$item->name}}と{{ $item->price }}が、コントローラーから渡されたレコード情報が出力される箇所となります。

ルーティング追加

最後にアクセスするURLを設定するため、ルーティングを記述します。
ここでは/itemsに設定します。

Route::get('/items', 'ItemsController@index');

確認

ブラウザから http://localhost:8000/items にアクセスして、itemsテーブルのレコードが出力されていることが確認できます。