【发布时间】:2017-06-07 12:31:05
【问题描述】:
Symfony 版本 3.2.8
我不确定是什么导致了这个错误,根据Doctrine Documentation setParameter 函数是否被正确使用?
破解密码:
public function getNewShipChoices($uid, $fid) {
/*Identify ships all ready added in fleet and do not allow them to be added again*/
$q2 = $this->createQueryBuilder('c')
->select('DISTINCT (c2.shipId)')
->join('AppBundle:ShipsFleet', 'c2')
->where('c.userid = :uid')->setParameter('uid', $uid)
->andWhere('c2.fleetId = :fid')->setParameter('fid', $fid);
$query = $this->createQueryBuilder('c3');
$query->where($query->expr()->notIn('c3.shipId', $q2->getDQL()))->andWhere('c3.userid = :uid')->setParameter('uid', $uid);
return $query->getQuery()->getResult();
}
我尝试的另一件事是对 setParameter 值进行硬编码,这会带来相同的错误消息
->where('c.userid = :uid')->setParameter('uid', 1)
->andWhere('c2.fleetId = :fid')->setParameter('fid', 1);
工作代码: 用硬编码值替换 setParameter 而不是传入 1 和 1 的 2 个整数值。
public function getNewShipChoices($uid, $fid) {
$q2 = $this->createQueryBuilder('c')
->select('DISTINCT (c2.shipId)')
->join('AppBundle:ShipsFleet', 'c2')
->where('c.userid = 1')
->andWhere('c2.fleetId = 1');
$query = $this->createQueryBuilder('c3');
$query->where($query->expr()->notIn('c3.shipId', $q2->getDQL()))->andWhere('c3.userid = 1');
return $query->getQuery()->getResult();
}
我错过了一些非常明显的东西吗?
【问题讨论】:
-
当我得到这个错误时,我的代码是正确的,删除了缓存并且它起作用了。
标签: php symfony doctrine-orm