Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Блог

Статті, новини, туторіали та переклади від учасників спільноти

No results.
Tips 31 липня 2026

firstOrFail() - чиста обробка 404

Перевіряєте на існування моделі перед використанням? Багато шаблонного коду.

firstOrFail() кидає виняток, який Laravel перетворює на 404.

Переваги:

  • Менше boilerplate
  • Автоматична обробка помилок
  • REST-friendly

Схожі методи: findOrFail($id), sole().

// ПОГАНО
public function show($id)
{
  $post = Post::find($id);

  if (!$post) {
    abort(404);
  }

  return view('posts.show', compact('post'));
}

// ДОБРЕ
public function show($id)
{
  $post = Post::findOrFail($id);

  return view('posts.show', compact('post'));
}

// За slug
public function showBySlug($slug)
{
  $post = Post::where('slug', $slug)->firstOrFail();

  return view('posts.show', compact('post'));
}
Human-in-the-Loop
Новини 31 липня 2026

Laravel AI SDK отримав функцію Human-in-the-Loop для підтвердження дій

На Laracon US 2026 команда Laravel представила API human-in-the-loop для Laravel AI SDK. Тепер агенти можуть зупинятися перед виконанням інструмента та чекати на підтвердження, відхилення або редагування аргументів людиною.

4
Tips 30 липня 2026

Глобальні скоупи - умови за замовчуванням

Одна й та сама where-умова в кожному запиті? Це не DRY.

Global Scopes додають умову автоматично.

Типові кейси:

  • Multi-tenancy
  • Soft deletes (вже реалізовано через глобальний скоуп)
  • published = true
  • Архівні записи

Можна прибрати через withoutGlobalScope().

// Окремий клас скоупу
class PublishedScope implements Scope
{
  public function apply(Builder $builder, Model $model)
  {
    $builder->where('published', true);
  }
}

// Підключення до моделі
class Post extends Model
{
  protected static function booted()
  {
    static::addGlobalScope(new PublishedScope);
  }
}

// Всі запити - тепер тільки published
$posts = Post::all();
$post = Post::find(1);
// Зняття скоупу для окремого запиту
$all = Post::withoutGlobalScope(
  PublishedScope::class
)->get();

// Multi-tenancy через глобальний скоуп
class TenantScope implements Scope
{
  public function apply(Builder $builder, Model $model)
  {
    if (auth()->check()) {
      $builder->where(
        'tenant_id',
        auth()->user()->tenant_id
      );
    }
  }
}

class Document extends Model
{
  protected static function booted()
  {
    static::addGlobalScope(new TenantScope);
  }
}
Laracon US 2026: відео другого дня вже доступне
Новини 30 липня 2026

Laracon US 2026: відео другого дня вже доступне

Другий день Laracon US 2026 завершив конференцію в Бостоні, і запис уже доступний. Кент Ч. Доддс про продуктове інженерство в епоху AI, Джо Таненбаум про реалтайм-застосунки на Reverb і Echo, Пауліна Вос про JJ - надбудову над Git з атомарними комітами.

Laravel LSP: офіційний мовний сервер для редакторів
Новини 29 липня 2026

Laravel LSP: офіційний мовний сервер для редакторів

На Laracon US 2026 Тейлор Отвелл представив Laravel LSP - офіційний мовний сервер, який навчає редактор розуміти маршрути, конфіги, Blade, переклади, Eloquent і прив'язки контейнера. Працює в VS Code, Zed, Sublime Text, Neovim, Cursor і OpenCode.

Laracon US 2026: перший день
Новини 29 липня 2026

Laracon US 2026: перший день

У Бостоні стартував Laracon US 2026, і запис першого дня вже доступний. Головне з кейноуту: офіційний Laravel LSP для редакторів, Laravel Cloud деплоїть Hono, Flask, Go та Rails, Pest 5 із Tia Engine. Аарон Френсіс приєднався до команди Laravel.

Pest 5: Tia Engine, плагін для AI-агентів і evals для LLM
Новини 29 липня 2026

Pest 5: Tia Engine, плагін для AI-агентів і evals для LLM

На першому дні Laracon US 2026 Нуно Мадуро представив Pest 5. Головне - Tia Engine, що переганяє лише зачеплені змінами тести й скорочує десятихвилинний прогін до кількох секунд, плюс плагіни для AI-агентів, evals, PHPStan і Rector.

Tips 29 липня 2026

Subquery Selects - уникаємо N+1 без eager loading

Потрібен останній пост користувача? Eager loading витягне ВСІ пости.

Subquery-select дозволяє додати обчислювану колонку без завантаження зв'язку.

Коли використовувати:

  • Останній/перший пов'язаний запис
  • count/sum/max/min по зв'язку
  • Коли не потрібні повні дані зв'язку

Продуктивність:

Один запит. Ніякого N+1. Немає зайвих даних.

// ПОГАНО: вантажимо всі пости, щоб узяти останній
$users = User::with('posts')->get();
foreach ($users as $user) {
  echo $user->posts
    ->sortByDesc('created_at')->first()->title;
}

// ДОБРЕ: subquery - тільки заголовок останнього поста
$users = User::select('users.*')
  ->addSelect(['last_post_title' => Post::select('title')
    ->whereColumn('user_id', 'users.id')
    ->latest()
    ->limit(1)
  ])->get();

echo $users[0]->last_post_title;

// Сортування по subquery - без завантаження постів
$users = User::orderByDesc(
  Post::select('created_at')
    ->whereColumn('user_id', 'users.id')
    ->latest()
    ->limit(1)
)->get();

Статті, новини та посібники про Laravel і PHP українською: релізи фреймворку, патерни, інструменти та досвід команд. Нижче - розбивка за категоріями й темами, якщо хочете звузити пошук.

Зараз опубліковано 322 матеріали від 3 авторів. Останній матеріал - 30 жовтня 2026.