Iterator - контроль обходу
Дає уніфікований обхід колекції, не розкриваючи її структуру. Вбудовані в PHP Iterator, IteratorAggregate і генератори yield для лінивої ітерації.
Почніть вводити, щоб шукати по статтях, вакансіях, компаніях, проєктах, ресурсах, пакетах, подіях і користувачах.
Статті, новини, туторіали та переклади від учасників спільноти
Дає уніфікований обхід колекції, не розкриваючи її структуру. Вбудовані в PHP Iterator, IteratorAggregate і генератори yield для лінивої ітерації.
Користувач випадково видалив свій акаунт. Відновити не можна. Негатив забезпечено.
Soft Deletes позначають запис як видалений, але фактично не прибирають його з бази.
Як працює:
Додаємо поле deleted_at, а Laravel автоматично приховує такі записи.
Корисні методи:
forceDelete() - повне видаленняwithTrashed() - включити видаленіonlyTrashed() - лише видаленіrestore() - відновитиПорада: Сумісно з GDPR: можна відновити за 30 днів, а потім зробити force delete.
// Міграція
Schema::table('users', function (Blueprint $table) {
$table->softDeletes();
});
// Модель
use Illuminate\Database\Eloquent\SoftDeletes;
class User extends Model
{
use SoftDeletes;
}
// Використання
$user->delete(); // Soft delete
$user->forceDelete(); // Повне видалення
// Запити
User::all(); // Тільки активні
User::withTrashed()->get(); // Включно з видаленими
User::onlyTrashed()->get(); // Лише видалені
// Відновлення
$user = User::withTrashed()->find(1);
$user->restore();
// Перевірка
if ($user->trashed()) {
// Користувач видалений
}
Laravel Cooldown - новий пакет від Mahedi Zaman Zaber, який дозволяє встановлювати часові блокування на конкретні дії: обмеження повторної відправки OTP, інтервали між запитами на скидання пароля, затримки перед повторними спробами платежів та інші сценарії з очікуванням.
Перевіряєте, чи існує запис, а потім оновлюєте або створюєте? Забагато коду.
updateOrCreate() виконує обидві операції за один раз.
Як працює:
Магія:
Порада: Ідеально підходить для інтеграцій з API.
// ПОГАНО: два запити, зайвий код
$user = User::where('email', 'john@example.com')->first();
if ($user) {
$user->update(['name' => 'John Doe']);
} else {
User::create([
'email' => 'john@example.com',
'name' => 'John Doe'
]);
}
// ДОБРЕ: один метод, один запит
User::updateOrCreate(
['email' => 'john@example.com'],
['name' => 'John Doe', 'verified' => true]
);
// Синхронізація даних з API
$apiUsers = ExternalAPI::getUsers();
foreach ($apiUsers as $apiUser) {
User::updateOrCreate(
['external_id' => $apiUser['id']],
['name' => $apiUser['name'], 'email' => $apiUser['email']]
);
}
Пишете where('status', 'active') у 20 контролерах? Перестаньте дублювати код.
Query Scopes дозволяють повторно використовувати логіку запитів. Описали один раз - застосовуєте всюди.
Два типи:
Чому варто використовувати скоупи:
Порада: Методи локальних скоупів починаються зі слова scope - Laravel автоматично прибирає його.
// User Model
public function scopeActive($query)
{
return $query->where('status', 'active');
}
public function scopeVerified($query)
{
return $query->whereNotNull('email_verified_at');
}
public function scopeCreatedAfter($query, $date)
{
return $query->where('created_at', '>', $date);
}
// Використання - чисто та читабельно
$users = User::active()->verified()->get();
$recentUsers = User::active()
->createdAfter(now()->subDays(7))
->get();
// Комбінування зі звичайними методами запиту
$admins = User::active()
->where('role', 'admin')
->orderBy('name')
->get();
Laravel Quota - новий пакет для відстеження та контролю накопичувальних лімітів споживання ресурсів. На відміну від RateLimiter, він рахує витрати відносно бюджету, що скидається на межі календарного періоду, і може зберігати дані у базі даних.
Описує правила у вигляді невеликої власної мови (DSL) і обчислює їх. Як комбінувати прості вирази в дерево умов і коли краще взяти готовий парсер.
Uvora - безкоштовний macOS-застосунок у menu bar, який індексує Laravel-проєкти на вашому комп'ютері й дозволяє миттєво переходити до них через клавіатурний шорткат. Індексує маршрути, контролери, моделі та компоненти, забезпечуючи результати пошуку менш ніж за 50 мілісекунд.
Інкапсулює дію з параметрами в окремий об'єкт, який можна відкласти, повторити чи поставити в чергу. У Laravel це Jobs та Console Commands.
Матеріали за темою «Laravel»: усе, що ми писали про це українською. Нижче - суміжні теми, якщо шукаєте ширше.
Зараз опубліковано 150 матеріалів від 3 авторів. Останній матеріал - 12 вересня 2026.