0

次の DQL クエリがあります。

$queries_query = $this->_em->createQuery('SELECT q FROM \Entities\Query q INNER JOIN q.store s WHERE s.tvRegionId IN (?1)');
$queries_query->setParameter(1, $tv_region_ids);

where 句の最初の値に一致する結果のみが返されます。変数 $tv_region_ids には、カンマ区切りの値が含まれています。その変数を配列に変更すると、次のメッセージが表示されます。

注意: 配列から文字列への変換

誰でも私の問題に光を当てることができますか?私は完全に困惑しています。

4

1 に答える 1

2

INタイプクエリの DQL に文字列を渡すことはできません。配列を渡す必要があります。DQL は準備済みステートメントと非常によく似た働きをするため、INクエリは式として扱われ、生データをsetParameter関数に提供する必要があります。

$tv_region_ids = [16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1];

$queries_query = $this->_em->createQuery('SELECT q FROM \Entities\Query q INNER JOIN q.store s WHERE s.tvRegionId IN (?1)');
$queries_query->setParameter(1, $tv_region_ids);

文字列の変換 (念のため)

$string = "16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1";

$tv_regions_ids = explode(",", $string);
于 2013-06-17T16:42:22.370 に答える