web-dev-qa-db-fra.com

Aucun résultat n'a été trouvé pour la requête bien qu'au moins une ligne soit attendue

J'ai le code suivant:

/**
     * Search similar category given a string
     * 
     * @param $searchTerm search similar category
     */
    public function findOneSimilarCategory($searchTerm)
    {
        $query = $this->createQueryBuilder('secondLevelCategory')
                ->select('secondLevelCategory')
                ->where('secondLevelCategory.categoryTitle LIKE :searchTerm')
                ->setParameter('searchTerm', $searchTerm)
                ->getQuery();

        $query->useResultCache(true, self::CACHE_RESULT_LIFETIME, md5(__METHOD__ . serialize('category-search-' . $query->getParameters())));
        $query->useQueryCache(true);
        return $query->getSingleResult();
    }

mais cela me donne une erreur:

"PHP message: PHP Fatal error: Uncaught exception 'Doctrine\ORM\NoResultException' with message 'No result was found for query although at least one row was expected.' in /var/www/Shopious/vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php:649

19
adit

Vous obtenez cette erreur car vous utilisez la méthode getSingleResult(). il génère une exception s'il ne trouve même pas un seul résultat. vous pouvez utiliser la getOneOrNullResult() à la place pour obtenir un NULL s'il n'y a aucun résultat de la requête.

Requête # getSingleResult () : récupère un seul objet. Si le résultat contient plusieurs objets, une exception NonUniqueResultException est levée. Si le résultat ne contient aucun objet, une NoResultException est levée. La distinction pure/mixte ne s'applique pas.

53
Dan Revah