Symfony 3.4 / createQueryBuilder не работает, если используется andWhere () (ClassNotFoundException) - PullRequest
1 голос
/ 19 апреля 2020

В настоящее время я пытаюсь создать простой запрос для поиска пользователя по его имени:

namespace Swenso\IntranetBundle\Repository;

use Swenso\IntranetBundle\Entity\Employee;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Common\Persistence\ManagerRegistry;

/**
 * @method Employee|null find($id, $lockMode = null, $lockVersion = null)
 * @method Employee|null findOneBy(array $criteria, array $orderBy = null)
 * @method Employee[]    findAll()
 * @method Employee[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
 */
class EmployeeRepository extends ServiceEntityRepository
{
    public function __construct(ManagerRegistry $registry)
    {
        parent::__construct($registry, Employee::class);
    }

    public function findByUsername($value)
    {
        return $this->createQueryBuilder('e')
            ->andWhere('e.username = :val')
            ->setParameter('val', $value)
            ->orderBy('e.id', 'ASC')
            ->setMaxResults(10)
            ->getQuery()
            ->getResult()
            ;
    }

Запуск этого кода приводит к следующей ошибке:

Attempted to load class "Composite" from namespace "Doctrine\ORM\Query\Expr".
Did you forget a "use" statement for "Symfony\Component\Validator\Constraints\Composite"?

Если я уйду andWhere() запрос выполняется хорошо ...

Если бы кто-то мог помочь нам, это было бы здорово!

BR wucherpfennig

1 Ответ

0 голосов
/ 19 апреля 2020

Я имел эту ошибку раньше в той же symfony версии, и для этого после построителя запросов я не смог выполнить ->andWhere(), потому что вы еще не запустили условный оператор ->where().

Сначала всегда нужно начать условие с -> где () и после того, как вы можете объединить, используя больше ->andWhere() / ->orWhere().

В doctrine документации они помещают примечание, что мы можем используйте andWhere без установки где раньше.

Также попробуйте заглянуть на эту страницу документации из symfony, чтобы проверить, что класс репозитория хорошо собран https://symfony.com/doc/3.4/doctrine/repository.html возможно, служба etends, которую вы вызываете не загружается хороший Entity Manager.

Я надеюсь, что это работает. Приветствия

...