Repository - доступ до даних
Відділяє бізнес-логіку від доступу до даних за стабільним контрактом. Коли він виправданий, а коли в Laravel зайвий поверх Eloquent.
Почніть вводити, щоб шукати по статтях, вакансіях, компаніях, проєктах, ресурсах, пакетах, подіях і користувачах.
Статті, новини, туторіали та переклади від учасників спільноти
Відділяє бізнес-логіку від доступу до даних за стабільним контрактом. Коли він виправданий, а коли в Laravel зайвий поверх Eloquent.
Saga Lara Flow - пакет для Laravel, що дозволяє писати довготривалі бізнес-процеси як звичайні PHP-методи поверх черг Laravel. Підтримує автоматичні відкати транзакцій, сигнали, паралельні блоки та вкладені воркфлоу із записом кожного кроку до бази даних.
Відкриваємо український переклад документації Laravel 13.x - усі 103 сторінки, від маршрутизації до Passport. Переклад тримається в синхроні з laravel/docs автоматично: щоночі GitHub Action звіряє наші файли з апстрімом і перекладає лише ті секції, яких торкнувся diff. Текст машинний, вичитка триває.
Треба масово вставити або оновити дані?
upsert() робить insert або update у межах одного запиту.
Як працює:
Порада: ідеально для синхронізації з зовнішніми сервісами.
// Масове оновлення/створення користувачів
User::upsert(
[
['email' => 'john@ex.com', 'name' => 'John', 'age' => 30],
['email' => 'jane@ex.com', 'name' => 'Jane', 'age' => 25],
['email' => 'bob@ex.com', 'name' => 'Bob', 'age' => 35],
],
['email'], // Унікальне поле
['name', 'age'] // Поля для оновлення
);
Додає нові операції над набором об'єктів, не змінюючи їхні класи. Коли операцій більше, ніж типів, і чому новий тип об'єкта - слабке місце патерну.
Команда Filament випустила оновлення v4.12.6 та v5.7.6 з вражаючими покращеннями продуктивності: форми рендеряться на 90% швидше, таблиці - на 52% швидше. Також виправлено низку вразливостей безпеки, тому оновлення критично важливе для всіх користувачів.
Спочатку перевіряєте exists(), потім робите дію? Виходить громіздкий if/else.
existsOr() виконає callback, якщо запис не існує.
doesntExistOr() - якщо існує.
Де корисно:
// ПОГАНО
if (!User::where('email', $email)->exists()) {
return response()->json(['error' => 'User not found'], 404);
}
// ДОБРЕ
User::where('email', $email)
->existsOr(function () {
throw new UserNotFoundException('User not found');
});
// Створити, якщо немає
Post::where('slug', $slug)
->existsOr(function () use ($slug) {
Post::create(['slug' => $slug, 'title' => 'Draft']);
});
// Лог при існуванні
Order::where('id', $orderId)
->where('status', 'pending')
->doesntExistOr(function () use ($orderId) {
Log::warning("Non-pending order: {$orderId}");
});
Потрібні різні зв'язки в залежності від контексту?
Використовуйте when() для умовного eager loading.
Типові кейси:
Перевага: одна логіка запиту, різні варіанти відповіді.
// За роллю
$posts = Post::query()
->when(auth()->user()->isAdmin(), function ($query) {
$query->with(['author', 'drafts', 'revisions']);
})
->when(!auth()->user()->isAdmin(), function ($query) {
$query->with('author:id,name');
})
->get();
// За параметрами запиту
$posts = Post::query()
->when(request()->has('include_author'),
fn($q) => $q->with('author')
)
->when(request()->has('include_comments'),
fn($q) => $q->with('comments.user')
)
->get();
Laravel Head - свіжий офіційний пакет від команди Laravel, представлений на Laracon US 2026. Він надає зручний API для управління всіма елементами : заголовками, мета-описами, Open Graph, JSON-LD та ресурсними підказками у Blade, Livewire та Inertia додатках.
Матеріали за темою «Laravel»: усе, що ми писали про це українською. Нижче - суміжні теми, якщо шукаєте ширше.
Зараз опубліковано 208 матеріалів від 3 авторів. Останній матеріал - 30 жовтня 2026.