今回はDBのテーブルに登録したデータを取得して、画面に表示する方法を解説します。
SQLでいうと「SELECT文」に該当する箇所ですね。
「SELECT文」は複雑になるとうまくデータを取得できずに苦労することが多々ありますが、今回は1つのテーブルから条件なしですべてのデータを取得する方法なので、難しいことは少ないです。
また、今回解説するデータを取得して一覧にして表示する画面は、システムを作成する際によく作成するので、覚えておいて損はありません。
ぜひ取り組んで身につけてくださいね!
今回使用するテーブル
名前 | タイプ | その他設定 |
id | int | 主キー |
login_id | varchar(50) | ユニーク |
password | varchar | – |
created_at | timestamp | – |
updated_at | timestamp | – |
テーブルの作成は入門編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として、テーブルから登録されているデータを取得して画面に表示する方法を解説しました。
条件の指定もなく、すべてのデータを取得するだけ。
また、取得したデータを一覧で表示するだけだったので、とても簡単だったと思います。
しかし、この一覧表示はシステムを作成する際によくある画面なので、必ず覚えておきましょう!