Laravel チートシート
検索・印刷できる Laravel リファレンス——Artisan、ルーティング、Eloquent、クエリビルダー、マイグレーション、Blade、バリデーション、コレクション。無料。
Artisan CLI
14php artisan serve
ローカル開発サーバーを起動
php artisan make:model Post -mcr
マイグレーション/コントローラ/リソース付きモデル
php artisan make:controller PostController
新規コントローラクラスを生成
php artisan make:migration create_posts_table
新規マイグレーションファイルを作成
php artisan migrate
未実行のマイグレーションを実行
php artisan migrate:fresh --seed
全テーブルを削除し再マイグレーション・シード
php artisan db:seed
データベースシーダーを実行
php artisan tinker
対話型REPLシェルを開く
php artisan route:list
登録済み全ルートを一覧
php artisan optimize
設定/ルート/ビューをキャッシュ
php artisan queue:work
キュー上のジョブを処理
php artisan schedule:work
スケジューラをフォアグラウンドで実行
php artisan storage:link
storageをpublicパスにシンボリックリンク
php artisan key:generate
アプリケーションキーを生成
ルーティング
13Route::get('/users', [UserController::class, 'index'])
コントローラへのGETルートを定義
Route::post('/users', [UserController::class, 'store'])
POSTルートを定義
Route::put('/users/{user}', [UserController::class, 'update'])
PUTルートを定義
Route::patch('/users/{user}', [UserController::class, 'update'])
PATCHルートを定義
Route::delete('/users/{user}', [UserController::class, 'destroy'])
DELETEルートを定義
Route::get('/users/{id}', $fn)
必須のルートパラメータ
Route::get('/users/{id?}', $fn)
省略可能なルートパラメータ
Route::get('/profile', $fn)->name('profile')
URL生成用にルートに名前を付ける
Route::get('/admin', $fn)->middleware('auth')
ルートにミドルウェアを付加
Route::resource('posts', PostController::class)
RESTfulなリソースルートを登録
Route::prefix('admin')->group(function () {})
URIプレフィックスでルートをグループ化
Route::controller(PostController::class)->group($fn)
ルートを1つのコントローラにグループ化
Route::fallback($fn)
未一致ルートを処理 (404)
コントローラ
10php artisan make:controller PostController --resource
CRUDメソッド付きリソースコントローラ
public function __invoke(Request $request)
単一アクションのinvokableコントローラ
public function index() {}
リソースを一覧(indexメソッド)
public function store(Request $request) {}
新規リソースを保存
public function show(Post $post) {}
1リソースを表示(ルートモデルバインディング)
public function __construct(PostService $svc) {}
コンストラクタ経由で依存を注入
return view('posts.index', ['posts' => $posts])
データ付きでBladeビューを返す
return response()->json($data)
JSONレスポンスを返す
return redirect()->route('posts.index')
名前付きルートにリダイレクト
return back()
前のページにリダイレクト
Eloquent ORM
14Post::all()
全レコードを取得
Post::find($id)
主キーでレコードを検索
Post::where('active', true)->first()
条件に一致する最初のレコード
Post::create(['title' => 'Hi'])
一括代入してレコードを保存
$post->update(['title' => 'Edited'])
既存モデルを更新
$post->delete()
モデルインスタンスを削除
Post::firstOrCreate(['slug' => $slug])
一致レコードを検索または作成
Post::updateOrCreate($attrs, $values)
見つかれば更新、なければ作成
Post::with('author')->get()
リレーションをイーガーロード
public function comments() { return $this->hasMany(Comment::class); }
1対多のリレーション
public function author() { return $this->belongsTo(User::class); }
1対多の逆リレーション
protected $fillable = ['title', 'body'];
一括代入可能な属性
protected function casts(): array { return ['published_at' => 'datetime']; }
属性キャスト (casts()メソッド)
Post::onlyTrashed()->restore()
ソフト削除されたレコードを復元
クエリビルダ
13DB::table('users')->get()
テーブルから全行を取得
DB::table('users')->where('votes', '>', 100)->get()
条件で行をフィルタ
DB::table('users')->join('posts', 'users.id', '=', 'posts.user_id')
2つのテーブルを内部結合
DB::table('users')->orderBy('name')->get()
列で結果を並べ替え
DB::table('orders')->groupBy('status')->get()
列で行をグループ化
DB::table('users')->select('name', 'email')->get()
特定の列を選択
DB::table('users')->insert(['name' => 'Sam'])
新規行を挿入
DB::table('users')->where('id', 1)->update(['votes' => 1])
一致する行を更新
DB::table('users')->pluck('email')
単一列をコレクションとして取得
DB::table('users')->count()
一致する行数を数える
DB::table('users')->where('id', 1)->exists()
行が存在するか確認
DB::table('users')->paginate(15)
結果をページ送り
DB::table('users')->chunk(100, $fn)
結果をチャンク単位で処理
マイグレーションとスキーマ
12Schema::create('posts', function (Blueprint $table) {})
新しいテーブルを作成
$table->id()
自動増分の主キー
$table->string('title')
VARCHAR列
$table->integer('votes')
整数列
$table->boolean('active')
真偽値列
$table->timestamps()
created_atとupdated_at列
$table->foreignId('user_id')->constrained()
制約付きの外部キー
$table->string('note')->nullable()
NULL値を許可
$table->boolean('active')->default(true)
デフォルト値を設定
$table->index('slug')
列にインデックスを追加
$table->unique('email')
一意制約を追加
$table->dropColumn('votes')
列を削除
Bladeテンプレート
14@if ($ok) ... @elseif ($x) ... @else ... @endif
条件付きレンダリング
@foreach ($posts as $post) ... @endforeach
コレクションをループ
@forelse ($posts as $post) ... @empty ... @endforelse
空のフォールバック付きループ
{{ $variable }}
エスケープした出力を表示
{!! $html !!}
エスケープなしの生HTMLを表示
@extends('layouts.app')
レイアウトを継承
@section('content') ... @endsection
レイアウトのセクションを定義
@yield('content')
レイアウトでセクションを出力
@include('partials.nav')
別のビューをインクルード
<x-alert type="error" />
Bladeコンポーネントをレンダリング
@csrf
フォーム用のCSRFトークンフィールド
@auth ... @endauth
認証済みユーザーにコンテンツを表示
@can('update', $post) ... @endcan
認可ゲートのチェック
{{ $loop->index }}
@foreach内のループ変数
バリデーション
12$request->validate(['title' => 'required'])
リクエストデータをインラインで検証
'email' => 'required|email'
必須かつ有効なメールのルール
'name' => 'required|max:255'
最大長付きの必須
'email' => 'unique:users,email'
テーブル内で一意であること
'age' => 'nullable|integer|min:18'
最小値付きの省略可能な整数
'role' => ['required', Rule::in(['admin', 'user'])]
許可された値に制限
php artisan make:request StorePostRequest
Form Requestクラスを生成
public function rules(): array { return [...]; }
Form Requestのバリデーションルール
public function authorize(): bool { return true; }
Form Requestの認可
public function messages(): array { return [...]; }
カスタムバリデーションメッセージ
$validator = Validator::make($data, $rules)
バリデータを手動で作成
$request->validated()
検証済み入力のみを取得
リクエストとレスポンス
10request()->input('name')
入力値を取得
request()->query('page')
クエリ文字列の値を取得
request()->all()
全入力を配列として取得
request()->only(['name', 'email'])
入力の一部を取得
request()->has('name')
入力の有無を確認
response()->json(['ok' => true])
JSONレスポンスを返す
redirect()->route('home')->with('status', 'Saved')
フラッシュメッセージ付きでリダイレクト
back()->withInput()
旧入力を保持して元に戻る
abort(404)
HTTP例外をスロー
abort_if($user->banned, 403)
条件付きでリクエストを中断
コレクション
13$collection->map(fn ($x) => $x * 2)
各項目を変換
$collection->filter(fn ($x) => $x > 0)
一致する項目を保持
$collection->each(fn ($x) => $x->save())
項目ごとにコールバックを実行
$collection->pluck('name')
1つの列を抽出
$collection->reduce(fn ($c, $x) => $c + $x, 0)
単一の値に集約
$collection->sortBy('created_at')
キーで並べ替え
$collection->groupBy('status')
キーで項目をグループ化
$collection->where('active', true)
キー/値ペアでフィルタ
$collection->first()
最初の項目を取得
$collection->contains('name', 'Sam')
一致する項目の有無を確認
$collection->sum('price')
列を合計
$collection->flatten()
ネストしたコレクションを平坦化
$collection->toArray()
プレーンな配列に変換
認証とミドルウェア
11Auth::user()
認証済みユーザーを取得
Auth::check()
ユーザーがログイン中か確認
Auth::id()
認証済みユーザーIDを取得
Auth::login($user)
ユーザーをログインさせる
Auth::logout()
現在のユーザーをログアウト
auth()->user()
現在のユーザー用ヘルパー
Route::get('/home', $fn)->middleware('auth')
認証でルートを保護
Gate::allows('update', $post)
認可ゲートをチェック
$user->can('update', $post)
ポリシーに対し権限をチェック
php artisan make:policy PostPolicy --model=Post
認可ポリシーを生成
php artisan make:middleware EnsureTokenIsValid
ミドルウェアクラスを生成
ヘルパーとその他
12config('app.name')
設定値を読み取り
env('APP_DEBUG', false)
環境変数を読み取り
route('posts.show', $post)
名前付きルートへのURLを生成
url('/dashboard')
完全修飾URLを生成
asset('css/app.css')
公開アセットのURL
old('email')
フラッシュされた旧入力を取得
now()->addDays(7)
現在のCarbonタイムスタンプ
Str::slug('My Title')
文字列ヘルパー(スラッグ化)
collect([1, 2, 3])->sum()
配列からコレクションを作成
cache()->remember('key', 60, $fn)
値を一定期間キャッシュ
dd($value)
値をダンプして終了
Storage::put('file.txt', $contents)
ファイルをストレージに書き込み
「:q」に一致する項目はありません。
お困りですか?
このツールで問題が見つかりましたか?チームにお知らせください。