目次
Laravel11
インストール
composer create-project laravel/laravel アプリの名前 "11.*"
cd アプリの名前
php artisan serve
MySQLのユーザー作成
mysql -u root -p
CREATE DATABASE アプリのDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'アプリの名前_user'@'localhost' IDENTIFIED BY '強いパスワード';
GRANT ALL PRIVILEGES ON アプリのDB.* TO 'アプリの名前_user'@'localhost';
FLUSH PRIVILEGES;
exit;
.envの設定
- 上のMySQLユーザー作成時に設定を合わせる
APP_LOCALE=ja
APP_FALLBACK_LOCALE=ja
APP_FAKER_LOCALE=ja_JP
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=アプリのDB
DB_USERNAME=アプリの名前_user
DB_PASSWORD=強いパスワード
- 以下ユーザー認証の導入後にmigrateを行う
ユーザー認証の導入
Breezeインストール
composer require laravel/breeze --dev
php artisan breeze:install blade
npm install && npm run dev
- npm run dev でターミナルが操作できないので新しいターミナルを開く
Screenshot
php artisan migrate
bladeのbody書き換え
設計を見ながらコントローラ作成
- 以下のコマンドでPostコントローラ、Postモデル、マイグレーションが作られる。
- マイグレーションが不要なら -cr
php artisan make:model Post -mcr
- 表示の確認だけなら、migrationとmodelのリレーションは飛ばす
マイグレーションの編集
database/migrations/xxxx_xx_xx_create_posts_table.php
public function up(): void
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained()->onDelete('cascade');
$table->string('title');
$table->text('body');
$table->timestamps();
});
}
php artisan migrate
viewファイルの作成
mkdir resources/views/posts
- views/postsにcreate.blade.phpを作成
- breezのスタイルはコンポーネントだけど、従来に合わせて普通型に変更
- $slot 消す
- @yield(‘content’) にして、普通のBladeページから @section(‘content’) で中身渡す
layouts/app.blade.php
bodyのみ置き換え
<body class="font-sans antialiased">
<div class="container mx-auto p-4">
@yield('content')
</div>
</body>
コントローラーの編集
app/Http/Controllers/PostController.php
public function create()
{
return view('posts.create');
}
モデルのリレーションとstoreアクション
app/Http/Controllers/PostController.php
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required|string|max:255',
'body' => 'required|string',
]);
$request->user()->posts()->create($validated);
return redirect()->route('posts.index')->with('success', '記事を投稿しました!');
}
- UserとPostのリレーション
app/Models/User.php
public function posts()
{
return $this->hasMany(Post::class);
}
app/Models/Post.php
public function user()
{
return $this->belongsTo(User::class);
}
- ここまででcreateができる
確認
http://localhost:8000/register
- 登録フォームが出てくる
- 登録後、以下のリンクを開く http://localhost:8000/posts/create