我需要这样查询:
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/")
)
有没有更好的办法?