gpt4 book ai didi

php - 带数组参数的 Symfony2 Doctrine2 查询

转载 作者:行者123 更新时间:2023-11-29 14:21:36 25 4
gpt4 key购买 nike

我需要像这样进行查询:

SELECT p.pid, p.url FROM products as p WHERE url_crc IN (FNV_64("http://url1.com/"),FNV_64("http://url2.com/"))

我需要对每个数组变量使用 FNV_64 哈希函数。 在将变量传递给查询生成器之前,我无法创建哈希值。此哈希函数仅作为 MySQL 扩展可用。

我如何使用 Symfony2 来实现这个?例如,使用:

$qb = $em->createQueryBuilder();
$query = $qb->select('p.pid')
->from('SRC\MainBundle\Entity\Product', 'p')
->where('p.url_crc IN (FNV_64(:urls))') // error HERE
->setParameter('urls', $hashes_array)
->getQuery();

行不通。我能做到这一点的唯一方法是:

$query = $em->createNativeQuery('SELECT p.pid, p.url FROM products as p
WHERE url_crc IN (' . join(',', $tmp_array) . ')', $rsm);

tmp_array 看起来像这样:

Array
(
[0] => FNV_64("http://url1.com/")
[1] => FNV_64("http://url2.com/")
)

还有更好的办法吗?

最佳答案

您始终可以绕过 DQL。但是,Doctrine2 旨在支持各种数据库引擎,并允许您添加“DQL 中特定于供应商的 SQL 功能”。您可以阅读This link看看如何编写代码来支持 mysql 扩展。还有一个 github 存储库的链接,其中包含许多扩展,您可以查看示例。

另一件事——我发现至少有一个 FNV 哈希的 php 实现 here.

关于php - 带数组参数的 Symfony2 Doctrine2 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11660922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com