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リクエストがきたらMessageControllerのindexメソッドが担当する
<?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
を実行