Artisan, routes, controllers, Eloquent, Blade & middleware
Frameworkphp 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/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']);
});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'));
}
}// 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]);<!-- 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>// 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');// 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', ...);
});