参数无效:查询中未定义令牌帐户



我定义了两个查询生成器。

第一:返回用户的所有帐户。

秒:按帐户返回所有用户事务。

第一:

public function getAccountsList($user)
{
    return $this->getAccountRepository()
        ->createQueryBuilder('a')
        ->select('a')
        ->where('a.user = :user')
        ->setParameter('user', $user)
        ->getQuery()
        ->getResult();
}

第二:

 public function  getTransactionsList($user)
{
    $accounts = $this->getAccountsList($user);
    $query = $this->getTransactionRepository()
        ->createQueryBuilder('t')
        ->select('t')
        ->where('t.account IN (:accounts)')
        ->setParameter('account', $accounts)
        ->getQuery()
        ->getResult();
    return $query;
}

第一个工作正常,但第二个抛出错误:

参数无效:查询中未定义令牌帐户

如何解决?

token account is not defined in the query

这意味着->setParameter('account', ...)任何地方都是查询

在您的->where中,您已经设置了带有S和结尾的令牌:accounts,拼写错误

正确答案是

public function  getTransactionsList($user) {
    $accounts = $this->getAccountsList($user);
    $query = $this->getTransactionRepository()
        ->createQueryBuilder('t')
        ->select('t')
        ->where('t.account IN (:accounts)')
        ->setParameter('accounts', $accounts)
        ->getQuery()
        ->getResult();
    return $query;
}

帐户参数中有拼写错误

 public function  getTransactionsList($user)
{
    $accounts = $this->getAccountsList($user);
    $query = $this->getTransactionRepository()
        ->createQueryBuilder('t')
        ->select('t')
        ->where('t.account IN (:accounts)')
        ->setParameter('account', $accounts)
        ->getQuery()
        ->getResult();
    return $query;
}

如您所见...

->where('t.account IN (:accounts)')
->setParameter('account', $accounts)

一个是账户,另一个是账户。应该是:

 public function  getTransactionsList($user)
{
    $accounts = $this->getAccountsList($user);
    $query = $this->getTransactionRepository()
        ->createQueryBuilder('t')
        ->select('t')
        ->where('t.account IN (:accounts)')
        ->setParameter('accounts', $accounts)
        ->getQuery()
        ->getResult();
    return $query;
}

最新更新