existsOr() та doesntExistOr() - чисті перевірки існування
Спочатку перевіряєте 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}");
});