Syntax Error: line 0, col 72: Error: Expected end of string, got 'b6f037'
Syntax Error: line 0, col 72: Error: Expected end of string, got 'b6f037'
我在查询时收到一个奇怪的错误,我不明白它是如何工作的或为什么会发生。
我是 symfony 的新手,所以对我来说很简单。
我的目标是:Select table 但我想排除当前用户数据。
/**
* @param int $getIndex
* @param User $user
* @return int|mixed|string
*/
public function findByIndex(int $getIndex, User $user)
{
$queryBuilder = $this->createQueryBuilder('a');
$query = $queryBuilder->where(
$queryBuilder->expr()->eq('a.index', $getIndex),
$queryBuilder->expr()->neq('a.user', $user->getId())
)
->getQuery();
return $query->getResult();
}
我想要 return 结果,但我不想要当前用户的答案。
并且错误是从 neq 抛出的。
"[Syntax Error] line 0, col 72: Error: Expected end of string, got 'b6f037' File:/home/wwwroot/htdocs/vendor/doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php Line: 52"
这是我传入的
public function __construct(
UserRepository $userRepository,
AnswerRepository $answerRepository,
TokenStorageInterface $tokenStorage
) {
$this->userRepository = $userRepository;
$this->answerRepository = $answerRepository;
$this->user = $tokenStorage->getToken()->getUser();
}
$results = $this->answerRepository->findByIndex($dto->getIndex(), $this->user);
我该如何解决这个问题?
我认为问题的根源在于您传递的是用户 ID 而不是用户实体(DQL 使用对象)。 Doctrine 将处理结果查询中的索引。另外 总是 将你的变量设置为参数(Doctrine 会正确地转义值)。
尝试如下操作:
public function findByIndex(int $getIndex, User $user)
{
$queryBuilder = $this->createQueryBuilder('a');
$query = $queryBuilder
->where($queryBuilder->expr()->eq('a.index', ':index'))
->andWhere($queryBuilder->expr()->neq('a.user', ':user'))
->setParameter('index', $getIndex)
->setParameter('user', $user)
->getQuery();
return $query->getResult();
}
我在查询时收到一个奇怪的错误,我不明白它是如何工作的或为什么会发生。
我是 symfony 的新手,所以对我来说很简单。
我的目标是:Select table 但我想排除当前用户数据。
/**
* @param int $getIndex
* @param User $user
* @return int|mixed|string
*/
public function findByIndex(int $getIndex, User $user)
{
$queryBuilder = $this->createQueryBuilder('a');
$query = $queryBuilder->where(
$queryBuilder->expr()->eq('a.index', $getIndex),
$queryBuilder->expr()->neq('a.user', $user->getId())
)
->getQuery();
return $query->getResult();
}
我想要 return 结果,但我不想要当前用户的答案。
并且错误是从 neq 抛出的。
"[Syntax Error] line 0, col 72: Error: Expected end of string, got 'b6f037' File:/home/wwwroot/htdocs/vendor/doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php Line: 52"
这是我传入的
public function __construct(
UserRepository $userRepository,
AnswerRepository $answerRepository,
TokenStorageInterface $tokenStorage
) {
$this->userRepository = $userRepository;
$this->answerRepository = $answerRepository;
$this->user = $tokenStorage->getToken()->getUser();
}
$results = $this->answerRepository->findByIndex($dto->getIndex(), $this->user);
我该如何解决这个问题?
我认为问题的根源在于您传递的是用户 ID 而不是用户实体(DQL 使用对象)。 Doctrine 将处理结果查询中的索引。另外 总是 将你的变量设置为参数(Doctrine 会正确地转义值)。
尝试如下操作:
public function findByIndex(int $getIndex, User $user)
{
$queryBuilder = $this->createQueryBuilder('a');
$query = $queryBuilder
->where($queryBuilder->expr()->eq('a.index', ':index'))
->andWhere($queryBuilder->expr()->neq('a.user', ':user'))
->setParameter('index', $getIndex)
->setParameter('user', $user)
->getQuery();
return $query->getResult();
}