簡體   English   中英

語法錯誤:第 0 行,第 72 列:錯誤:預期的字符串結尾,得到 'b6f037'

[英]Syntax Error: line 0, col 72: Error: Expected end of string, got 'b6f037'

我正在做一個查詢,我收到一個奇怪的錯誤,我不明白它是如何工作的或為什么會發生。

我是 symfony 的新手,所以對我很陌生。

我的目標是:到 Select 獲取表,但我想排除當前用戶數據。

    /**
 * @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();
}

我想返回結果,但我不希望當前用戶回答。

並且錯誤是從 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();
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM