Шпаргалка з 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
Створити symlink storage до публічного шляху
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')
Прикріпити middleware до маршруту
Route::resource('posts', PostController::class)
Зареєструвати RESTful ресурсні маршрути
Route::prefix('admin')->group(function () {})
Згрупувати маршрути під префіксом URI
Route::controller(PostController::class)->group($fn)
Згрупувати маршрути до одного контролера
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) {}
Показати один ресурс (route model binding)
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); }
Зв'язок один-до-багатьох
public function author() { return $this->belongsTo(User::class); }
Зворотний зв'язок один-до-багатьох
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')
Внутрішнє з'єднання двох таблиць
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
Перевірка через authorization gate
{{ $loop->index }}
Змінна циклу всередині @foreach
Валідація
12$request->validate(['title' => 'required'])
Валідувати дані запиту вбудовано
'email' => 'required|email'
Правило обов'язкового та валідного 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')
Перенаправити з flash-повідомленням
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')
Витягти один стовпець
$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()
Перетворити у звичайний масив
Автентифікація та middleware
11Auth::user()
Отримати автентифікованого користувача
Auth::check()
Перевірити, чи користувач увійшов
Auth::id()
Отримати ID автентифікованого користувача
Auth::login($user)
Увійти користувачем
Auth::logout()
Вийти поточному користувачу
auth()->user()
Помічник для поточного користувача
Route::get('/home', $fn)->middleware('auth')
Захистити маршрут автентифікацією
Gate::allows('update', $post)
Перевірити authorization gate
$user->can('update', $post)
Перевірити можливість за політикою
php artisan make:policy PostPolicy --model=Post
Згенерувати політику авторизації
php artisan make:middleware EnsureTokenIsValid
Згенерувати клас middleware
Помічники та інше
12config('app.name')
Прочитати значення конфігурації
env('APP_DEBUG', false)
Прочитати змінну середовища
route('posts.show', $post)
Згенерувати URL до іменованого маршруту
url('/dashboard')
Згенерувати повний URL
asset('css/app.css')
URL для публічного ресурсу
old('email')
Отримати старе flash-введення
now()->addDays(7)
Поточна позначка часу Carbon
Str::slug('My Title')
Помічник для рядків (slugify)
collect([1, 2, 3])->sum()
Створити колекцію з масиву
cache()->remember('key', 60, $fn)
Кешувати значення на час
dd($value)
Вивести значення та завершити (dd)
Storage::put('file.txt', $contents)
Записати файл у storage
Жоден запис не відповідає “:q”.
Потрібна допомога?
Виникла проблема з цим інструментом? Повідомте нас.