Table of Contents
起動関連コマンド
プロジェクト作新規作成(バージョン12指定)
curl -s https://laravel.build/test-project | bash -s -- --prefer-dist laravel/laravel:^12.0
↓初めてプロジェクトを起動する場合は、下記を入力(起動までに時間かかる)
.vendor/bin/sail up
↓もしテーブルがないエラーや上記が無限ループしている場合は下記を実行
./vendor/bin/sail artisan migrate
対象ディレクトリ指定
cd test-project
Laravel立ち上げ
sail up -d
※立ち上がらない場合はDocerを起動してコマンドを打つ
作業終了したい場合
sail stop
フロントエンドをビルド
sail npm run dev
開発サーバーを起動し、Tailwind CSS や JS の変更をリアルタイムで反映する
※最初にこれを忘れると、Tailwindがvite経由で正常にビルドされない。
DB基本操作コマンド
database/migrations/ の中に「Test」というマイグレーションファイルを作成
TestやPostというテーブルも一緒に作りたい場合に使用
sail artisan make:model Test -m
※下記のようにモデルとマイグレーションファイル両方が生成される
test-project/app/Models/Test.php
test-project/database/migrations/2024_12_21_213822_add_test_column.php
usersというテーブル情報を含んだファイルを生成(カラム追加時など)
sail artisan make:migration add_test_column --table users
↓ 生成ファイル名
2025_03_27_125654_add_test_column.php
生成ファイル名にテーブル名をつけて、よりわかりやすく明示的にしたい場合は、下記がおすすめ。
sail artisan make:migration add_title_and_body_column_to_users_table
↓ 生成ファイル名
2025_03_31_034326_add_title_and_body_column_to__users_table.php
作ったマイグレーションファイルをDBへマイグレート
sail artisan migrate
マイグレートを取り消し(ロールバック)
下記を実行すればbatch単位で一個戻れる(他のモデルも一緒に一個戻ることになる)
sail artisan migrate:rollback
もし対象のモデルに対してのみマイグレートやロールバックを行いたい場合は、下記のようにファイルを指定して実行
※こっちの方がオススメ!
sail artisan migrate --path=database/migrations/2025_03_25_000000_create_tests_table.php
sail artisan migrate:rollback --path=database/migrations/2025_03_25_000000_create_tests_table.php
全べてのマイグレーションをロールバックしてテーブルを削除
全てのマイグレーションが「最初からやり直し」になる。
具体的には、down()
メソッドが呼ばれ、現在のデータベースのすべてのテーブルが削除されることになる。
※ある程度開発が進行中の場合は使わない方がいい!
sail artisan migrate:reset
resetを行った後に再度マイグレートを行うことも可能(データベースを初期状態に戻して再構築したいときに使用)
※こちらもテーブル内データは失われるので、開発スタート時以外は基本使わないこと!
sail artisan migrate:refresh
モデルファイルは完全に不要になった場合、手動で削除してOK
カラムの追加(ファイル内記述)
基本的な書き方
$table->データ型('カラム名')->カラム修飾子
※「$table->id();」などはショートカットメソッドという
→カラム名と、カラム修飾子(->uniqueなど)がデフォルトで付与されている
上記のような実行したい処理はファイル内の「up」に記載
実行したくない(今後する予定)の処理は「down」に記載
→ロールバック時の処理など
「$table->dropColumn('test');」(testカラム削除)、
「$table->renameColumn('test3', 'test2');」(カラム名変更)など、upと逆になるように書く
「add_test_column」、「delete_test_column」のように処理でファイルを分けておく
→処理順番はファイル名のタイムスタンプ(ファイル名の先頭部分)で決まる
各カラム操作
$table->string('test')->after('email');//emailの後にtestカラム追加
$table->renameColumn('test', 'test2');//カラム名変更
$table->text('test2')->change();//データ型を変更
$table->text('test2')->nullable()->change();//カラム修飾子を変更
既存のテーブルにカラムを追加したい場合
途中でカラムを追加したくなった場合、下記のコマンドを打ち、マイグレーションファイルを作成。
sail artisan make:migration add_age_column_to_posts_table --table=users
UPにusersテーブルへ入れたいカラム(例えば年齢)を記載すればOK
public function up(): void
{
Schema::table('posts', function (Blueprint $table) {
$table->foreignId('user_age');
});
}
※テーブル構造を上記のように後から変更する場合、downメソッドの初期値は空になってファイルが生成されるので、自分で入れておく必要がある。
POSTデータ作成コマンド
①モデルとマイグレーションファイルを作成+DB登録
→Postというモデルとマイグレーションファイル(テーブルの素材)を作成
sail artisan make:model Post -m
下記のように生成される
test-project/app/Models/Post.php
test-project/database/migrations/2024_12_22_222724_create_posts_table.php
作ったマイグレーションファイルをDBへマイグレート(テーブル作成)
sail artisan migrate
②ビューファイル(HTML)の設定
/postというフォルダを指定したパスに作成
mkdir -p resources/views/post
「create.blade.php」ファイルを作成
→フォームのHTMLを記載
※blade=view(HTML定義)と覚えておく
touch resources/views/post/create.blade.php
③コントローラーの作成
sail artisan make:controller PostController
フォームの内容(create.blade.php)を表示するためのコントローラー「PostController」を作成
ファイル内にcreateメソッド「 public function create() {return view(‘post.create’);} 」を記載(引数はcreate.blade.php を指す)
④ルートに記載
Route::get('post/create', [PostController::class, 'create']);
web.phpにルート、use設定を記載
※ローカルホストで表示確認
http://localhost/post/create
その他便利コマンド
ミドルウェア作成
sail artisan make:middleware RoleMiddleware
詳しくは、「Laravelのミドルウェアの設定方法」にて記載
これまで作ったルート確認
sail artisan route:list
リソースコントローラー作成
CRUD処理などがコントローラーファイルに予め作成された状態でスタートできる。
例:「sail artisan make:controller コントローラー名 --resource --model=1モデル名」
↓
sail artisan make:controller PostController --resource --model=Post
上記でリソースコントローラー設定済みのPostControllerを作ったら、そのルート設定をweb.phpで行う
Route::resource('post', PostController::class);
//上記を記述すれば下記を省くことができる
//Route::get('post/create', [PostController::class, 'create']);
//Route::post('post', [PostController::class, 'store'])->name('post.store');
//Route::get('post', [PostController::class, 'index'])->name('post.index');
//Route::get('post/show/{post}', [PostController::class, 'show'])->name('post.show');
//Route::get('post/{post}/edit', [PostController::class, 'edit'])->name('post.edit');
//Route::patch('post/{post}', [PostController::class, 'update'])->name('post.update');
//Route::delete('post/{post}', [PostController::class, 'destroy'])->name('post.destroy');
//
//require __DIR__.'/auth.php';
これ一個でCRUD用ルート設定を省略できる。
ページネーション用ビューファイルをコピー
もともとvendorの中で定義されているページネーションのスタイルを、こちら側でカスタマイズできるようにする
sail artisan vendor:publish --tag=laravel-pagination
下記のようにvendoの中のファイルがresourcesディレクトリにコピーされるので、下記のhtml(tailwindcss)を修正
resources/views/vendor/pagination/tailwind.blade.php
シーダー・ファクトリーでダミーデータ作成
sail artisan make:seeder PostSeeder
sail artisan make:factory PostFactory
詳しくは下記で解説。