Laravel入門編6・一覧画面を作成する方法

【Laravel入門6】データを取得して一覧画面を作成する方法

今回はDBのテーブルに登録したデータを取得して、画面に表示する方法を解説します。

SQLでいうと「SELECT文」に該当する箇所ですね。

「SELECT文」は複雑になるとうまくデータを取得できずに苦労することが多々ありますが、今回は1つのテーブルから条件なしですべてのデータを取得する方法なので、難しいことは少ないです。

また、今回解説するデータを取得して一覧にして表示する画面は、システムを作成する際によく作成するので、覚えておいて損はありません。

ぜひ取り組んで身につけてくださいね!

バージョン9.51.0の「Laravel」で説明します

目次

今回使用するテーブル

名前  タイプ  その他設定
idint主キー
login_idvarchar(50)ユニーク
passwordvarchar
created_attimestamp
updated_attimestamp
テーブル名「managers」

テーブルの作成は入門編3を参考にしてください。

また、以下の記事で登録画面を作成して、いくつかデータの登録も行ってくださいね。

今回活用するファイル

今まで入門編を解説してきた中で、下記のファイルを利用するので用意をお願いします。
このブログの入門編を順番に行っている場合は、用意不要です。

モデルファイル「app\Models」に「Manager.php」用意。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Manager extends Model
{
    use HasFactory;
    protected $fillable = [
        'login_id',
        'password',
    ];
}

データを一覧表示する画面を作成する

では早速、データを一覧で表示する画面(URL:list_manager)を作成してみましょう!

手順1:ルーティングの設定ファイルを編集する

まずは「list_manager」にアクセスした時に、参照する「コントローラーファイル」を「ルーティングの設定ファイル」で指定してあげましょう。

ルーティングの設定ファイルは「routes\web.php」です。

以下のコードを付け足しましょう。

Route::get('/list_manager', 'App\Http\Controllers\ManagerController@list');

上記のコードは「list_manager」にアクセスされたとき、「ManagerController.php」ファイルの「list」を参照する。という意味だと覚えておきましょう!

手順2:コントローラーファイルを編集する

次にコントローラーファイルの「ManagerController.php」に「list」を追加します。

    public function list()
    {
        // ここに処理を書きます
    }

さらに、「list」の処理の中にデータを取得してくる処理を記述します。

    public function list()
    {
        $Manager_List = Manager::get();
        return view('list_manager', compact('Manager_List'));
    }

「get()」は対象のテーブルから全件取得してきます。

上記のソースの書き方だと「managers」テーブルから「全件取得」という意味をもっています。

ほかにも以下のようなデータ取得方法があります。

「first()」:最初の1件目を取得
「find()」:指定のIDのデータを取得 ※たとえばID=2であれば「find(2)」
「all()」:「get()」と同じく、全件取得
「where()->get()」:条件を指定して取得 ※たとえばnameに「山田」で登録しているデータであれば「where(‘name’, ‘山田’)->get();」

追々覚えていきましょう!!

手順3:コビューファイルを作成する

次に「resources\views」にビューファイルの「list_manager.blade.php」を新規作成しましょう!

細かいところは、入門1で解説しているので参考にしてみてください。

では、受け取ったデータを画面に表示するように処理を書きます。
データは全件取得しているので、配列になっています。

以下のようにループ文でデータを表示するようにします。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<h2>管理者一覧</h2>
<table>
    @foreach ($Manager_List as $Manager)
    <tr>
        <td>{{ $Manager->login_id }}</td>
    </tr>
    @endforeach
</table>
</body>
</html>

手順4:ブラウザで画面を確認する

ではちゃんと作成できているか、ブラウザで「http://localhost/test-laravel/public/list_manager」にアクセスして確認してみましょう!

上記のように「managers」テーブルに登録されているIDがブラウザで表示されれば、成功です!

人によって登録したIDは異なるので、phpMyadminで「managers」テーブルに登録されているデータと見比べてみてくださいね。

今回のファイルのまとめ

今回は3つのファイルを使用しました。

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

// 2023.02.18 追記
Route::get('/hello', 'App\Http\Controllers\HelloController@index');

// 2023.03.11 追記
Route::get('/register_manager', 'App\Http\Controllers\ManagerController@index');
Route::post('/register_manager', 'App\Http\Controllers\ManagerController@register');

// 2023.03.25 追記
Route::get('/list_manager', 'App\Http\Controllers\ManagerController@list');

さいごに

今回は「Laravel」の入門編6として、テーブルから登録されているデータを取得して画面に表示する方法を解説しました。

条件の指定もなく、すべてのデータを取得するだけ。
また、取得したデータを一覧で表示するだけだったので、とても簡単だったと思います。

しかし、この一覧表示はシステムを作成する際によくある画面なので、必ず覚えておきましょう!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次