将 Doctrine 的 EntityRepository::matching() 方法与 Criteria 对象一起使用时,如何绑定参数?

Posted

技术标签:

【中文标题】将 Doctrine 的 EntityRepository::matching() 方法与 Criteria 对象一起使用时,如何绑定参数?【英文标题】:How do you bind parameters when using Doctrine's EntityRepository::matching() method with a Criteria object? 【发布时间】:2021-11-19 13:58:13 【问题描述】:

我正在尝试使用Criteria 对象和EntityRepository::matching() 方法来查询我的数据库:

$criteria = new Criteria();
$criteria->where(Criteria::expr()->eq('applied', false))
         ->andWhere(Criteria::expr()->eq('cancelled', false))
         ->andWhere(Criteria::expr()->eq('identifier', $identifier)) // danger Here

        ;

$results = $this->matching($criteria);

问题是,标准参数之一可能来自最终用户(具体来说是$identifier)。

Criteriamatching(Criteria) 似乎不允许设置和绑定参数。

如何安全地执行这些查询?是否为使用EntityRepository::matching() 执行的任何查询自动绑定参数?

【问题讨论】:

【参考方案1】:

为此使用expr()->literal($identifier),它确保参数被正确转义。

【讨论】:

以上是关于将 Doctrine 的 EntityRepository::matching() 方法与 Criteria 对象一起使用时,如何绑定参数?的主要内容,如果未能解决你的问题,请参考以下文章

将 Doctrine 从 2.0.6 升级到 2.3

如何将嵌入的 Doctrine 文档填充到 Zend 字段集中?

是否可以将 Doctrine 与持久 PDO 连接一起使用?

是否可以将 Doctrine 2 与 Zend Framework 1.1x 集成?

将原始 MySQL 翻译成 Doctrine 1.2

将模型类的 Doctrine_Collection 转换为简单对象数组的简单方法?