Laravelの基本コマンド一覧メモ(随時更新)

2024.12.23

起動関連コマンド

プロジェクト作新規作成(バージョン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

詳しくは下記で解説。

LaravelのseederとfactoryでダミーデータをDBに量産する

PIC UP