Comment tester si une valeur existe en base de données avec Laravel Eloquent ?

Introduction

L’ORM Eloquent inclus avec Laravel vous fournit un moyen facile d’interagir avec votre base de données. Cela simplifie toutes les opérations CRUD (Create, read, update, and delete) et toute autre requête de base de données.

Dans ce tutoriel, vous apprendrez comment vérifier si une valeur existe déjà en base de données avec Laravel Eloquent !

Vérifier si une valeur existe

Laravel fournit une méthode très agréable appelée exists qui vous permet de vérifier si votre requête renvoie des résultats plutôt que d’utiliser la fonction count.

if (Post::where('slug', $slug)->exists()) {
   // post with the same slug already exists
}

Je préfère toujours utiliser la méthode exists mais voici un autre exemple utilisant la méthode count:

if (Post::where('slug', $slug)->count() > 0) {
   // post with the same slug already exists
}

Ce que nous faisons ici, c’est de sélectionner tous les messages où l’option slug est égal au slug que nous avons passé en entrée, puis nous faisons un comptage, et si c’est supérieur à 0cela signifie qu’un message avec ce slug existe déjà.

Créer un enregistrement s’il n’existe pas déjà

Laravel fournit une autre méthode avantageuse appelée firstOrCreate. Elle vous permet de vérifier rapidement si une entrée spécifique existe déjà et, si ce n’est pas le cas, de créer une entrée pour elle en une seule requête.

Prenons l’exemple suivant, nous avons un formulaire de création de billet où nous voulons vérifier si un billet avec un slug spécifique existe, et si ce n’est pas le cas, alors nous voulons créer le billet.

En utilisant firstOrCreate cela ressemblera à ceci :

    $post = Post::firstOrCreate(
        [
            'slug'             => $post->slug,
        ],
        [
            'title'            => $post->title,
            'body'             => $post->body,
            'slug'             => $post->slug,
        ]
    );

Nous vérifions d’abord si un article avec ce slug existe en utilisant l’instruction suivante :

        [
            'slug'             => $post->slug,
        ],

Et s’il n’existe pas, nous le créons directement avec les valeurs suivantes :

        [
            'title'            => $post->title,
            'body'             => $post->body,
            'slug'             => $post->slug,
        ]
Nouveau Tutoriel

Newsletter

Ne manquez jamais les nouveaux conseils, tutoriels et autres.

Pas de spam, jamais. Nous ne partagerons jamais votre adresse électronique et vous pouvez vous désabonner à tout moment.