Шпаргалка по 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')
Привязать 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) {}
Показать ресурс (привязка модели к маршруту)
public function __construct(PostService $svc) {}
Внедрить зависимость через конструктор
return view('posts.index', ['posts' => $posts])
Вернуть Blade-представление с данными
return response()->json($data)
Вернуть JSON-ответ
return redirect()->route('posts.index')
Перенаправить на именованный маршрут
return back()
Перенаправить на предыдущую страницу
ORM Eloquent
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
Проверка через 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)
Проверить 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)
Вывести значение и завершить
Storage::put('file.txt', $contents)
Записать файл в хранилище
Нет записей, соответствующих «:q».
Нужна помощь?
Возникла проблема с этим инструментом? Сообщите нам.