我需要像这样进行查询:
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/")
)
有更好的方法吗?