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

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

LaravelのORM(オブジェクト関連マッピング )を実装した「Eloquent」を利用して、データベースを利用する手順を記述してます。ここでは、事前にテーブルを作成してレコードを表示するまでのサンプルコードを記述してます。

環境

  • 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にテーブルを作成しておきます。
ここではitemlistsテーブルというテーブルを作成してます。

CREATE TABLE if not exists itemlists (
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 itemlists (NAME,price) 
VALUES ("item1",100),("item2",200),("item3",300);

モデル作成

まずはモデルを作成します。
モデル名には接続するテーブルの名称との間に関係性があります。
例えばテーブル名が「itemlists」ならモデル名は「Itemlist」となります。

モデル名を複数形の「スネークケース」にしたものが、テーブル名となります。
モデル名が「articleTitle」の場合は、テーブル名は「article_titles」となります。

php artisan make:model Itemlist

appフォルダ配下に「Itemlist.php」が作成されます。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Itemlist extends Model
{
    //
}

コントローラー作成

次にコントローラーを作成します。

php artisan make:controller ItemlistController

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

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Itemlist;

class ItemlistController extends Controller
{
    public function index()
	{
		$itemlists = Itemlist::all();
		$data = ['itemlists' => $itemlists];
		return view('itemlist.index', $data);
	}
}

ビュー作成

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

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

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

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

ルーティング追加

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

Route::get('/itemlist', 'ItemlistController@index');

確認

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