php - 使用 Jsonb 绑定(bind)参数?|使用 Postgres 的 Doctrine2

我在 DQL 语句中使用绑定(bind)参数时遇到问题。

我创建了一个 JSONB DBAL 数据类型和一个名为 JSON_CONTAINS_ANY() 函数的 FunctionNode。我想要的最终查询是:

SELECT * from Cache where content->'status' ?| ['开始','进行中'];

我的 DQL 语句如下所示:

$dql = "SELECT e FROM Entity e WHERE JSON_CONTAINS_ANY(content, 'status', :statusList";
$dql->setParameter('statusList',$statusList, Jsonb::JSONB);

问题: 问题是 ?| 运算符被视为参数扩展索引并搞砸了我的查询。关于如何处理这个的任何想法?

最佳答案

我不知道我的回答是否相关,我看到这个问题是 6 年前提出的,但是,从字面上看,2 年前出现了更优雅的解决方案,那么有人可以提供帮助。您可以在此链接中详细阅读 https://wiki.php.net/rfc/pdo_escape_placeholders 从描述中,我现在要删除 ? 您可以通过这种方式进行筛选 ??,如中所述:

That means that the “??” string would be translated to “?” when sending the query to the database, whereas “?” is still going to be interpreted as a positional parameter placeholder.

$stmt = $pdo->prepare('SELECT * FROM tbl WHERE json_col ?? ?');
$stmt->execute(['foo']); 

关于php - 使用 Jsonb 绑定(bind)参数?|使用 Postgres 的 Doctrine2 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31617870/

相关文章:

r - 如何在 R 中分离数据集

c# - 在基于 Web 的架构上使用 POCO、DTO 和 ViewModel

algorithm - 生成填字游戏的高效算法(纽约时报的风格)

sql - 如何克服 `PERCENTILE_CONT` 参数应为常量的限制?

hibernate - Spring-data/Hibernate 不能正确处理空值

python - 通过 Mininet 网络发送 "random"流量

git - "git add -A"和 "git add ."之间的区别

asp.net-mvc-4 - ModelState.IsValid == false,尽管插入了所

c# - Visual Studio : how to use scripts to "build

python - 在 Matplotlib 和 OSX 中使用数学模式和下标时出现错误偏移