Symfony 3.4 /如果使用andWhere()则createQueryBuilder不起作用(ClassNotFoundException)

问题描述 投票:1回答:1

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

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

php symfony doctrine query-builder symfony-3.4
1个回答
0
投票

我之前在相同的symfony版本上遇到此错误,并且为此在查询生成器之后我无法执行->andWhere(),因为您尚未启动->where()条件语句。

首先总是需要使用-> where()开始条件,然后可以使用更多的->andWhere() / ->orWhere()进行连接。

在学说documentation上,他们写了一个注释,我们可以在不设置先前位置的情况下使用andWhere。

还尝试从symfony上查看此文档页面,以检查存储库类是否构建良好https://symfony.com/doc/3.4/doctrine/repository.html,也许您正在调用的etends服务没有加载好的Entity Manager。

我希望这可行。干杯

© www.soinside.com 2019 - 2024. All rights reserved.