4_Laravel10_マイグレ_モデル_コントローラー_ビュー

LaravelはDBのテーブル定義の管理もプロジェクト上で行う。
テーブル定義を記述するファイルをマイグレーションファイル、定義をデータベースに反映する作業をマイグレートと呼ぶ

マイグレーションファイル作成
database/migrations/作成日時_create_messages_table.phpファイルができる
※間違えた場合は手動でファイルを削除し再度コマンドを実行する

#sail artisan make:migration ファイル名 --create=DBテーブル名
sail artisan make:migration create_messages_table --create=messages

database/migrations/作成日時_create_messages_table.php
を開いて
$table->string(‘body’);
を追加する

<?php
 use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 return new class extends Migration
 {
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::create('messages', function (Blueprint $table) {
            $table->id();
            $table->string('body');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('messages');
    }
};

マイグレートを実行する
messagesテーブルにbodyという文字列のフィールドを追加する
マイグレート実行

sail artisan migrate

データベース操作

#データベース接続
sail mysql
#テーブル確認 FieldのとこにbodyがあればOK
desc messages;
#とりあえず登録
insert into messages(body) values('Hello Hello World!');
insert into messages(body) values('Hello Laravel');

モデルの作成

モデルはテーブルに情報を登録したり、情報を取得したりできるクラス
app/Models/Message.phpができる

#sail artisan make:model モデル名
sail artisan make:model Message

モデルはモデル名の複数形のテーブルと関連付けられる
今回はMessageモデルはmessagesテーブルと関連づけられる
Messageモデルを使用してmessagesテーブルを操作できる

コントローラ作成

app/Http/Controllers/MessageController.phpができる

sail artisan make:controller MessageController

コントローラー編集
indexメソッドはモデルを使用してメッセージテーブルのレコードを全件取得している。
取得した内容は連想配列でmessages/indexビューに渡している

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\View\View;
use App\Models\Message;

class MessageController extends Controller
{
 public function index():View
 {
  // メッセージテーブルのレコードを全件取得
  $messages = Message::all();
  // messagesというキーで、ビューへ渡す
  return view('message/index',['messages'=>$messages]);
 }
}

ルーティング設定

ルーティングはroutes/web.phpに書く
/messagesにGETリクエストがきたらMessageControllerindexメソッドが担当する

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\MessageController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/

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

Route::get('messages', [MessageController::class,'index']);

ルーティング状況は次のコマンドで確認

sail artisan route:list

ビューの作成

ビューファイルは手動で作成
resources/views/の配下にmessage/index.blade.phpを作成
BladeはLaravelが採用しているテンプレートエンジン

<!DOCTYPE html>
 <html lang="ja">
 <head>
 <meta charset="UTF-8">
 <title>Message Sample</title>
 </head>
 <body>
  <main>
  <h1>メッセージ</h1>
   <ul>
   @foreach ($messages as $message)
  <li>{{ $message->body }}</li>
  @endforeach
  </ul>
  </main>
 </body>
</html>

http://localhost/messagesにアクセス
起動していない場合は
sail up -d
を実行

Author: gaa

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です