Laravel10+Breezeでログイン機能付きのプロジェクトを生成する(MAMP+Mac環境+sailなし)

Laravel


Laravel10でユーザ登録とログイン機能を持ったページをbreezeを使用したら簡単にできるらしかったので試しました。
初めてlaravelにふれる方でも簡単に作成できると思います。

開発環境

PC:MacBookAir M2
メモリ:16GB

環境の準備

主に必要なものは以下の4つです

  • VScode
  • Homebrew
  • Composer
  • MAMP

Homebrewのインストール

以下サイトでコマンドをコピーしてターミナルで実行
https://brew.sh/index_ja

Composerのインストール

以下コマンドをターミナルで実行でインストール

brew install compose

laravelプロジェクトを作成

MAMPの公開設定になっているディレクトリ内の任意のプロジェクトを作成したいディレクトリにターミナル内でcdコマンドを使用して移動します

私の場合は~/workspace/mamp/が公開設定になっているディレクトリなのでここに移動します

cd ~/workspace/mamp/

laravelのプロジェクトを以下のコマンドで作成します(プロジェクト名)の箇所を好きな名前にしてください

composer create-project --prefer-dist laravel/laravel プロジェクト名

作成が完了したら作成したディレクトリにcdコマンドで移動

cd プロジェクト名

laravelのスタートコマンドを実行

php artisan serve

こんな表示になるのでここのURLをコピーしてブラウザで表示

このページが出たらとりあえずプロジェクトは作成できています

Breezeの導入

認証機能を追加するためにBreezeを先程のプロジェクトに追加しましょう。

プロジェクトディレクトリ以下で以下のコマンドを実行

composer require laravel/breeze --dev

Breezのインストールコマンド実行

php artisan breeze:install

ユーザの登録にDBが必要なのでMAMPでDBだけ作成します
MAMPアプリの上の方に飛行機アイコンがあるのでそれをクリック

ページが表示されるのでメニューのTool→phpMyAdminを選択

新規作成を選択

適当なDB名をつけ作成ボタンを押下

VSCodeでプロジェクトを開くと、.envという名前のファイルがあるのでコレを編集します

DB_CONNECTION=mysqlと記載されている箇所を以下のように修正。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=8889
DB_DATABASE=test_prj #DB名
DB_USERNAME=root #mampの初期値
DB_PASSWORD=root #mampの初期値

.envのキャッシュが残っている場合があるので下記コマンドをそれぞれ実行

php artisan config:clear
php artisan cache:clear

初期ではsessionsテーブルがないので下記のmigrateファイルを作成

php artisan make:migration create_sessions_table --create=sessions

余談:Migrateファイルとは?

migrateファイルとはDBのテーブルの構成とかを記載するファイルです。
※複数人でプロジェクト進めるときとかにコマンド実行するとテーブルが作成されるので便利!

コマンドを実行すると以下のようにファイルが作成されるので編集

このファイルを開いて以下のように書き換えます

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateSessionsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('sessions', function (Blueprint $table) {
            $table->string('id')->unique();
            $table->foreignId('user_id')->nullable()->constrained();
            $table->text('payload');
            $table->integer('last_activity');
            $table->string('ip_address')->nullable();
            $table->string('user_agent')->nullable();
        });
    }

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

migrateコマンドを実行し、上記のmigrateファイルの内容をDBに反映

php artisan migrate

余談

ちなみに後で項目が足りないとか、修正したい場合は以下のコマンドで追加用のmigrateファイルを作成して上記のmigrateコマンドを実行すると対応できます
sessionsテーブルに項目追加する場合
add_user_agent_to_sessions_table migrateファイル名
sessions 変更をしたいテーブル名

php artisan make:migration add_user_agent_to_sessions_table --table=sessions

変更内容の書き方

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class AddUserAgentToSessionsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('sessions', function (Blueprint $table) {
            $table->string('user_agent')->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('sessions', function (Blueprint $table) {
            $table->dropColumn('user_agent');
        });
    }
}

変更を保存

php artisan migrate

余談終わり

migrateが完了したらphpMyAdmin上のDBに各テーブルが追加されています

あとはターミナルでlaravelの起動コマンドを実行でOK

php artisan serve

右上にログインと登録ボタンが表示されます

Registerボタンを押したらこんなかんじ

登録もちゃんとできるはずです。

コメント