Laravel Cheatsheet

Artisan, routes, controllers, Eloquent, Blade & middleware

Framework
Contents
⚙️

Artisan CLI

php artisan serve                    # dev server
php artisan make:model User -mcr     # model + migration + controller
php artisan make:controller UserController
php artisan make:migration create_users_table
php artisan migrate
php artisan migrate:rollback
php artisan migrate:fresh --seed
php artisan db:seed
php artisan make:middleware Auth
php artisan route:list
php artisan tinker                   # REPL
php artisan cache:clear
php artisan config:cache
php artisan queue:work
🗺️

Routes

// routes/web.php or routes/api.php
use App\Http\Controllers\UserController;

Route::get('/', fn() => view('welcome'));
Route::get('/users', [UserController::class, 'index']);
Route::post('/users', [UserController::class, 'store']);
Route::get('/users/{id}', [UserController::class, 'show']);
Route::put('/users/{id}', [UserController::class, 'update']);
Route::delete('/users/{id}', [UserController::class, 'destroy']);

// Resource route (all CRUD)
Route::resource('users', UserController::class);

// API resource
Route::apiResource('posts', PostController::class);

// Group with middleware
Route::middleware('auth')->group(function() {
    Route::get('/dashboard', [DashController::class, 'index']);
});
🎮

Controllers

class UserController extends Controller
{
    public function index()
    {
        $users = User::all();
        return view('users.index', compact('users'));
    }

    public function store(Request $request)
    {
        $validated = $request->validate([
            'name' => 'required|max:255',
            'email' => 'required|email|unique:users',
        ]);
        User::create($validated);
        return redirect('/users');
    }

    public function show(User $user)  // route model binding
    {
        return view('users.show', compact('user'));
    }
}
🗄️

Eloquent ORM

// Model
class User extends Model {
    protected $fillable = ['name', 'email'];
    public function posts() {
        return $this->hasMany(Post::class);
    }
}

// Queries
User::all();
User::find(1);
User::where('age', '>', 18)->get();
User::where('name', 'Alice')->first();
User::where('active', true)->count();
User::orderBy('name')->paginate(15);
User::with('posts')->get();     // eager load

// Create / Update / Delete
User::create(['name' => 'Alice']);
$user->update(['name' => 'Bob']);
$user->delete();
User::destroy([1, 2, 3]);
🖼️

Blade Templates

<!-- Output -->
{{ $name }}                  <!-- escaped -->
{!! $html !!}              <!-- raw -->

<!-- Control -->
@if($user)
    <p>{{ $user->name }}</p>
@elseif($guest)
    <p>Guest</p>
@else
    <p>No user</p>
@endif

@foreach($users as $user)
    <li>{{ $user->name }}</li>
@endforeach

<!-- Layout -->
@extends('layouts.app')
@section('content')
    <h1>Page</h1>
@endsection

<!-- Components -->
<x-alert type="warning">Watch out!</x-alert>
🛡️

Middleware

// app/Http/Middleware/CheckAge.php
class CheckAge {
    public function handle($request, Closure $next) {
        if ($request->age < 18) {
            return redirect('home');
        }
        return $next($request);
    }
}

// Register in Kernel.php
'check.age' => CheckAge::class,

// Use on route
Route::get('/bar', fn() => ...)->middleware('check.age');
🔐

Authentication

// Laravel Breeze (simple)
composer require laravel/breeze --dev
php artisan breeze:install
npm install && npm run dev

// In controller
Auth::attempt(['email' => $e, 'password' => $p])
Auth::user()           // current user
Auth::check()          // is logged in?
Auth::logout()

// Protect routes
Route::middleware('auth')->group(function() {
    Route::get('/dashboard', ...);
});