我一直在浪费很多时间试图弄清楚为什么我不能在 Symfony 2 中的 Doctrine Query 对象上使用 setParameter 方法。
我创建了一个自定义存储库类,我想在其中添加一些自定义搜索方法/查找器。
我已经尝试了很多不同的构建 DQL 组合,并且在每种情况下它都不会替换我指定的通配符。我希望这是我错过的显而易见的事情,但我还是有点困惑。
// Repository class
namespace Acme\PurchaseOrderBundle\Entity;
use Doctrine\ORM\EntityRepository;
class PurchaseOrderRepository extends EntityRepository
{
public function findAllFiltered($sortType = 'id', $sort = 'ASC', $offset = 1, $limit = 30)
{
//Variation 1
$query = $this->getEntityManager()
->createQuery('
SELECT po FROM AcmePurchaseOrderBundle:PurchaseOrder po
WHERE po.id = ?1'
);
$query->setParameter(1, 1);
return $query->getDql();
// Yields: SELECT po FROM AcmePurchaseOrderBundle:PurchaseOrder po WHERE po.id = ?1
//Variation 2
$query = $this->getEntityManager()
->createQuery('
SELECT po FROM AcmePurchaseOrderBundle:PurchaseOrder po
WHERE po.id = :value'
);
$query->setParameter('value', 1);
return $query->getDql();
// Yields: SELECT po FROM AcmePurchaseOrderBundle:PurchaseOrder po WHERE po.id = :value
}
}
我开始使用 QueryBuilder,但这也以同样的问题告终,我无法获取要保存的参数!这真是太奇怪和令人沮丧了。
我正在使用 Symfony 2.1.5-DEV