我定义了两个查询生成器。
第一:返回用户的所有帐户。
秒:按帐户返回所有用户事务。
第一:
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;
}