Спрощуйте запити з негативними відношеннями за допомогою методу whereDoesntHave у Laravel

Перекладено ШІ 0 Laravel News 05 червня, 2025

Laravel запровадив нові методи для спрощення запитів з негативними відносинами, що дозволяє легше знаходити записи без специфічних відносин при збереженні чистоти та зрозумілості коду. Читайте далі, щоб дізнатися, як ці методи можуть оптимізувати вашу роботу в системах управління контентом!

Laravel впроваджує нові методи, які спрощують запити на відсутність зв'язків, дозволяючи легше знаходити записи без певних відношень при збереженні чистоти та читабельності коду

Методи whereDoesntHaveRelation пропонують зручний спосіб запитувати записи без специфічних зв'язків:

User::whereDoesntHaveRelation(
    'posts',
    'published_at',
    '>',
    now()->subWeek()
)->get();
 
User::whereMorphDoesntHaveRelation(
    'activities',
    [Comment::class, Review::class],
    'is_featured',
    true
)->get();

Ці методи особливо цінні в системах управління контентом:

class ContentManager
{
    public function findDormantAuthors()
    {
        return User::whereDoesntHaveRelation(
            'articles',
            'published_at',
            '>',
            now()->subDays(60)
        )->get();
    }
 
    public function getUnmoderatedContent()
    {
        return Article::whereDoesntHaveRelation(
            'moderations',
            'reviewed_at',
            '!=',
            null
        )->get();
    }
 
    public function getUnpopularContent()
    {
        return Article::whereMorphDoesntHaveRelation(
            'reactions',
            [Like::class, Share::class, Bookmark::class],
            'created_at',
            '>',
            now()->subMonth()
        )->get();
    }
 
    public function archiveStaleContent()
    {
        return Article::query()
            ->whereDoesntHaveRelation('comments', 'id', '!=', null)
            ->whereDoesntHaveRelation('views', 'id', '!=', null)
            ->whereDoesntHaveRelation(
                'updates',
                'created_at',
                '>',
                now()->subMonths(6)
            )
            ->update(['status' => 'archived']);
    }
}

Ці нові методи усувають потребу в складних замиканнях whereDoesntHave, роблячи запити на відсутність зв'язків більш інтуїтивними та легкими для підтримки, при цьому покращуючи читабельність коду

Популярні

Інше, що варто прочитати

15 Оновлено 02 червня, 2026

Випущено Livewire 3.6

Laravel Livewire випустив нову версію 3.6, яка приносить з собою цікаві HTML-директиви для управління видимістю DOM-елементів і JavaScript-діями. Досліджуйте нові можливості Livewire, що допоможуть вам створити ще більш інтерактивні користувацькі інтерфейси!

26 Оновлено 02 червня, 2026

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!

173 Оновлено 02 червня, 2026

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом