我目前正在尝试建立一个简单的查询,以按用户名查找用户:
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
我之前在相同的symfony版本上遇到此错误,并且为此在查询生成器之后我无法执行->andWhere()
,因为您尚未启动->where()
条件语句。
首先总是需要使用-> where()开始条件,然后可以使用更多的->andWhere()
/ ->orWhere()
进行连接。
在学说documentation上,他们写了一个注释,我们可以在不设置先前位置的情况下使用andWhere。
还尝试从symfony上查看此文档页面,以检查存储库类是否构建良好https://symfony.com/doc/3.4/doctrine/repository.html,也许您正在调用的etends服务没有加载好的Entity Manager。
我希望这可行。干杯