次のようなクエリを作成する必要があります。
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/")
)
より良い方法はありますか?