Php 如果使用andWhere(),Symfony 3.4/createQueryBuilder不工作(ClassNotFoundException)

Php 如果使用andWhere(),Symfony 3.4/createQueryBuilder不工作(ClassNotFoundException),php,symfony,doctrine,query-builder,symfony-3.4,Php,Symfony,Doctrine,Query Builder,Symfony 3.4,我目前正在尝试构建一个简单的查询,以通过用户名查找用户: namespace Swenso\IntranetBundle\Repository; use Swenso\IntranetBundle\Entity\Employee; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Common\Persistence\ManagerRegistry; /** * @meth

我目前正在尝试构建一个简单的查询,以通过用户名查找用户:

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"?
如果我省略了
和where()
查询运行良好

如果有人能帮助我们,那就太好了


BR wucherpfennig

我以前在同一个symfony版本上遇到过这个错误,对于这个after query builder,我无法执行
->andWhere()
,因为您还没有启动
->where()
条件语句

首先,始终需要使用->where()启动条件,然后可以使用更多的
->和where()
/
->或where()进行连接

在教义上,他们写了一个注释,我们可以使用andWhere,而不必设置以前的位置

另外,请尝试从symfony查看此文档页面,以检查存储库类是否构建良好,可能您调用的etends服务没有加载良好的实体管理器

我希望这能奏效。
Cheers

我以前在同一个symfony版本上遇到过这个错误,对于这个after query builder,我无法执行
->andWhere()
,因为您还没有启动
->where()
条件语句

首先,始终需要使用->where()启动条件,然后可以使用更多的
->和where()
/
->或where()进行连接

在教义上,他们写了一个注释,我们可以使用andWhere,而不必设置以前的位置

另外,请尝试从symfony查看此文档页面,以检查存储库类是否构建良好,可能您调用的etends服务没有加载良好的实体管理器

我希望这能奏效。
干杯

使用
->where()
有效吗
->and where()
表示复合条件。它的工作原理与您对当前版本的期望相同,但情况可能并非总是如此。在何处可以正常工作。错误消息表示实体上存在定义不正确的复合约束。因此,错误实际上来自验证程序,而不是查询。你在用表格吗?无论如何,请仔细检查您的复合约束/验证程序类,如果找不到问题,可能会发布代码。对EasyAdmin不太熟悉。复合约束是一个Symfony类,它包含多个约束,然后一个接一个地应用它们。大概在EasyAdmin生成的代码中有类似的事情发生。也许搜索复合可能会有所帮助,但可能不会。php版本?如有可能,使用7.4.4。一些早期版本存在一些预加载问题,导致了一些神秘的错误。当然,还要清除缓存。逐步浏览代码可能会有所帮助。只是在这里抓救命稻草。如果您保留了较旧的composer.lock文件,那么可能会尝试还原。您的代码看起来正确,您能否验证该类实际上存在于供应商文件夹\doctor\ORM\Query\Expr\Composite.php中?还可以使用
->where()
工作来共享composer.json吗
->and where()
表示复合条件。它的工作原理与您对当前版本的期望相同,但情况可能并非总是如此。在何处可以正常工作。错误消息表示实体上存在定义不正确的复合约束。因此,错误实际上来自验证程序,而不是查询。你在用表格吗?无论如何,请仔细检查您的复合约束/验证程序类,如果找不到问题,可能会发布代码。对EasyAdmin不太熟悉。复合约束是一个Symfony类,它包含多个约束,然后一个接一个地应用它们。大概在EasyAdmin生成的代码中有类似的事情发生。也许搜索复合可能会有所帮助,但可能不会。php版本?如有可能,使用7.4.4。一些早期版本存在一些预加载问题,导致了一些神秘的错误。当然,还要清除缓存。逐步浏览代码可能会有所帮助。只是在这里抓救命稻草。如果您保留了较旧的composer.lock文件,那么可能会尝试还原。您的代码看起来正确,您能否验证该类实际上存在于供应商文件夹\doctor\ORM\Query\Expr\Composite.php中?同样,共享composer.json可能会有所帮助。答案的第一部分完全错误:您总是从andWhere开始。总是可以的。试试看。关于实体管理器的第二部分只是一个纯粹的猜测,除非你能解释错误的实体管理器和“复合”约束错误之间的联系。这个答案的第一部分完全错误:你总是从andWhere开始。总是可以的。试试看。关于实体管理器的第二部分只是一个纯粹的猜测,除非您可以解释错误的实体管理器和“复合”约束错误之间的联系。