Ściąga Laravel
Przeszukiwalny, gotowy do druku przewodnik po Laravel — Artisan, routing, Eloquent, konstruktor zapytań, migracje, Blade, walidacja i kolekcje. Za darmo.
Artisan CLI
14php artisan serve
Uruchom lokalny serwer deweloperski
php artisan make:model Post -mcr
Model z migracją, kontrolerem i zasobem
php artisan make:controller PostController
Wygeneruj nową klasę kontrolera
php artisan make:migration create_posts_table
Utwórz nowy plik migracji
php artisan migrate
Uruchom oczekujące migracje bazy danych
php artisan migrate:fresh --seed
Usuń wszystkie tabele, ponów migracje i seed
php artisan db:seed
Uruchom seedery bazy danych
php artisan tinker
Otwórz interaktywną powłokę REPL
php artisan route:list
Wypisz wszystkie zarejestrowane trasy
php artisan optimize
Buforuj konfigurację, trasy i widoki
php artisan queue:work
Przetwarzaj zadania z kolejki
php artisan schedule:work
Uruchom harmonogram na pierwszym planie
php artisan storage:link
Utwórz dowiązanie storage do ścieżki public
php artisan key:generate
Wygeneruj klucz aplikacji
Trasowanie
13Route::get('/users', [UserController::class, 'index'])
Zdefiniuj trasę GET do kontrolera
Route::post('/users', [UserController::class, 'store'])
Zdefiniuj trasę POST
Route::put('/users/{user}', [UserController::class, 'update'])
Zdefiniuj trasę PUT
Route::patch('/users/{user}', [UserController::class, 'update'])
Zdefiniuj trasę PATCH
Route::delete('/users/{user}', [UserController::class, 'destroy'])
Zdefiniuj trasę DELETE
Route::get('/users/{id}', $fn)
Wymagany parametr trasy
Route::get('/users/{id?}', $fn)
Opcjonalny parametr trasy
Route::get('/profile', $fn)->name('profile')
Nazwij trasę do generowania URL
Route::get('/admin', $fn)->middleware('auth')
Dołącz middleware do trasy
Route::resource('posts', PostController::class)
Zarejestruj trasy zasobu RESTful
Route::prefix('admin')->group(function () {})
Grupuj trasy pod prefiksem URI
Route::controller(PostController::class)->group($fn)
Grupuj trasy do jednego kontrolera
Route::fallback($fn)
Obsłuż niedopasowane trasy (404)
Kontrolery
10php artisan make:controller PostController --resource
Kontroler zasobu z metodami CRUD
public function __invoke(Request $request)
Kontroler jednoakcyjny invokable
public function index() {}
Wypisz zasoby (metoda zasobu)
public function store(Request $request) {}
Zapisz nowy zasób
public function show(Post $post) {}
Pokaż jeden zasób (wiązanie modelu z trasą)
public function __construct(PostService $svc) {}
Wstrzyknij zależność przez konstruktor
return view('posts.index', ['posts' => $posts])
Zwróć widok Blade z danymi
return response()->json($data)
Zwróć odpowiedź JSON
return redirect()->route('posts.index')
Przekieruj do nazwanej trasy
return back()
Przekieruj do poprzedniej strony
Eloquent ORM
14Post::all()
Pobierz każdy rekord
Post::find($id)
Znajdź rekord po kluczu głównym
Post::where('active', true)->first()
Pierwszy rekord spełniający warunek
Post::create(['title' => 'Hi'])
Masowo przypisz i zapisz rekord
$post->update(['title' => 'Edited'])
Zaktualizuj istniejący model
$post->delete()
Usuń instancję modelu
Post::firstOrCreate(['slug' => $slug])
Znajdź lub utwórz pasujący rekord
Post::updateOrCreate($attrs, $values)
Zaktualizuj, jeśli znaleziono, inaczej utwórz
Post::with('author')->get()
Wczytaj relację z wyprzedzeniem
public function comments() { return $this->hasMany(Comment::class); }
Relacja jeden-do-wielu
public function author() { return $this->belongsTo(User::class); }
Odwrotna relacja jeden-do-wielu
protected $fillable = ['title', 'body'];
Atrybuty masowo przypisywalne
protected function casts(): array { return ['published_at' => 'datetime']; }
Rzutowanie atrybutów (metoda casts())
Post::onlyTrashed()->restore()
Przywróć miękko usunięte rekordy
Konstruktor zapytań
13DB::table('users')->get()
Pobierz wszystkie wiersze z tabeli
DB::table('users')->where('votes', '>', 100)->get()
Filtruj wiersze wg warunku
DB::table('users')->join('posts', 'users.id', '=', 'posts.user_id')
Złącz wewnętrznie dwie tabele
DB::table('users')->orderBy('name')->get()
Sortuj wyniki wg kolumny
DB::table('orders')->groupBy('status')->get()
Grupuj wiersze wg kolumny
DB::table('users')->select('name', 'email')->get()
Wybiera określone kolumny
DB::table('users')->insert(['name' => 'Sam'])
Wstaw nowy wiersz
DB::table('users')->where('id', 1)->update(['votes' => 1])
Aktualizuje pasujące wiersze
DB::table('users')->pluck('email')
Pobierz jedną kolumnę jako kolekcję
DB::table('users')->count()
Zlicz pasujące wiersze
DB::table('users')->where('id', 1)->exists()
Sprawdź, czy istnieją wiersze
DB::table('users')->paginate(15)
Stronicuj wyniki
DB::table('users')->chunk(100, $fn)
Przetwarzaj wyniki w porcjach
Migracje i schemat
12Schema::create('posts', function (Blueprint $table) {})
Tworzy nową tabelę
$table->id()
Automatycznie inkrementowany klucz główny
$table->string('title')
Kolumna VARCHAR
$table->integer('votes')
Kolumna typu integer
$table->boolean('active')
Kolumna typu boolean
$table->timestamps()
Kolumny created_at i updated_at
$table->foreignId('user_id')->constrained()
Klucz obcy z ograniczeniem
$table->string('note')->nullable()
Zezwól na wartości NULL
$table->boolean('active')->default(true)
Ustaw wartość domyślną
$table->index('slug')
Dodaj indeks do kolumny
$table->unique('email')
Dodaj ograniczenie unikalności
$table->dropColumn('votes')
Usuń kolumnę
Szablony Blade
14@if ($ok) ... @elseif ($x) ... @else ... @endif
Renderowanie warunkowe
@foreach ($posts as $post) ... @endforeach
Pętla po kolekcji
@forelse ($posts as $post) ... @empty ... @endforelse
Pętla z pustym wariantem awaryjnym
{{ $variable }}
Wypisz dane z eskejpowaniem
{!! $html !!}
Wypisz surowy HTML bez eskejpowania
@extends('layouts.app')
Dziedzicz z układu
@section('content') ... @endsection
Zdefiniuj sekcję układu
@yield('content')
Wypisz sekcję w układzie
@include('partials.nav')
Dołącz inny widok
<x-alert type="error" />
Wyrenderuj komponent Blade
@csrf
Pole tokenu CSRF dla formularzy
@auth ... @endauth
Pokaż treść uwierzytelnionym użytkownikom
@can('update', $post) ... @endcan
Sprawdzenie bramki autoryzacji
{{ $loop->index }}
Zmienna pętli wewnątrz @foreach
Walidacja
12$request->validate(['title' => 'required'])
Waliduj dane żądania bezpośrednio
'email' => 'required|email'
Reguła wymaganego i poprawnego e-maila
'name' => 'required|max:255'
Wymagane z maksymalną długością
'email' => 'unique:users,email'
Musi być unikalne w tabeli
'age' => 'nullable|integer|min:18'
Opcjonalna liczba całkowita z minimum
'role' => ['required', Rule::in(['admin', 'user'])]
Ogranicz do dozwolonych wartości
php artisan make:request StorePostRequest
Wygeneruj klasę Form Request
public function rules(): array { return [...]; }
Reguły walidacji Form Request
public function authorize(): bool { return true; }
Autoryzacja Form Request
public function messages(): array { return [...]; }
Niestandardowe komunikaty walidacji
$validator = Validator::make($data, $rules)
Utwórz walidator ręcznie
$request->validated()
Pobierz tylko zwalidowane dane
Żądania i odpowiedzi
10request()->input('name')
Pobierz wartość wejściową
request()->query('page')
Pobierz wartość z ciągu zapytania
request()->all()
Pobierz wszystkie dane jako tablicę
request()->only(['name', 'email'])
Pobierz podzbiór danych wejściowych
request()->has('name')
Sprawdź, czy dane wejściowe są obecne
response()->json(['ok' => true])
Zwróć odpowiedź JSON
redirect()->route('home')->with('status', 'Saved')
Przekieruj z komunikatem flash
back()->withInput()
Przekieruj wstecz, zachowując poprzednie dane
abort(404)
Rzuć wyjątek HTTP
abort_if($user->banned, 403)
Warunkowo przerwij żądanie
Kolekcje
13$collection->map(fn ($x) => $x * 2)
Przekształć każdy element
$collection->filter(fn ($x) => $x > 0)
Zachowaj pasujące elementy
$collection->each(fn ($x) => $x->save())
Uruchom callback na każdy element
$collection->pluck('name')
Wyodrębnij jedną kolumnę
$collection->reduce(fn ($c, $x) => $c + $x, 0)
Redukuje do jednej wartości
$collection->sortBy('created_at')
Sortuj wg klucza
$collection->groupBy('status')
Grupuj elementy wg klucza
$collection->where('active', true)
Filtruj wg pary klucz/wartość
$collection->first()
Pobierz pierwszy element
$collection->contains('name', 'Sam')
Sprawdź, czy istnieje pasujący element
$collection->sum('price')
Zsumuj kolumnę
$collection->flatten()
Spłaszcz zagnieżdżone kolekcje
$collection->toArray()
Przekształć w zwykłą tablicę
Uwierzytelnianie i middleware
11Auth::user()
Pobierz uwierzytelnionego użytkownika
Auth::check()
Sprawdź, czy użytkownik jest zalogowany
Auth::id()
Pobierz ID uwierzytelnionego użytkownika
Auth::login($user)
Zaloguj użytkownika
Auth::logout()
Wyloguj bieżącego użytkownika
auth()->user()
Pomocnik dla bieżącego użytkownika
Route::get('/home', $fn)->middleware('auth')
Zabezpiecz trasę uwierzytelnianiem
Gate::allows('update', $post)
Sprawdź bramkę autoryzacji
$user->can('update', $post)
Sprawdź uprawnienie względem polityki
php artisan make:policy PostPolicy --model=Post
Wygeneruj politykę autoryzacji
php artisan make:middleware EnsureTokenIsValid
Wygeneruj klasę middleware
Pomocniki i różne
12config('app.name')
Odczytaj wartość konfiguracji
env('APP_DEBUG', false)
Odczytaj zmienną środowiskową
route('posts.show', $post)
Wygeneruj URL do nazwanej trasy
url('/dashboard')
Wygeneruj w pełni kwalifikowany URL
asset('css/app.css')
URL dla publicznego zasobu
old('email')
Pobierz poprzednie dane flash
now()->addDays(7)
Bieżący znacznik czasu Carbon
Str::slug('My Title')
Pomocnik łańcuchów (slugify)
collect([1, 2, 3])->sum()
Utwórz kolekcję z tablicy
cache()->remember('key', 60, $fn)
Buforuj wartość na pewien czas
dd($value)
Zrzuć wartość i zakończ
Storage::put('file.txt', $contents)
Zapisz plik do storage
Żaden wpis nie pasuje do „:q”.
Potrzebujesz pomocy?
Masz problem z tym narzędziem? Daj nam znać.