$conditions[] = $this->getConnection()
->quoteInto('cat_index.category_id IN (?)', "{$filters[category_id]},{$Catids}");
quote into は、値を引用符で囲みます。quoteInto メソッドを使用せずに、この同じメソッドを使用したいと思います。基本的に、引用符を追加せずに同じことを行うメソッドを知りたい
$conditions[] = $this->getConnection()
->quoteInto('cat_index.category_id IN (?)', "{$filters[category_id]},{$Catids}");
quote into は、値を引用符で囲みます。quoteInto メソッドを使用せずに、この同じメソッドを使用したいと思います。基本的に、引用符を追加せずに同じことを行うメソッドを知りたい
問題は、文字列から値を解析していたため、$Cateids が整数ではなく文字列であるかのように扱われたことでした。私は次のことをしました
$values = $values ? array_filter(explode('_', $values)) : array();
$i = 0;
foreach($values as $v) {
$values[$i] = intval($v);
}
に続く
$query = "cat_index.category_id IN (" .
implode(',', array_fill(0, count($values), "?")). ")";
foreach($values as $v) {
$conditions[] = $this->getConnection()->quoteInto($query,$v);
}
渡される値は、引用符で囲まれるのではなく、整数のように扱われるようになりました
$filters['category_id']
が配列ではないと仮定$Catids
しますが、配列であると仮定すると、おそらく次のようになります。
->quoteInto('cat_index.category_id IN (?)', array_merge(array($filters['category_id']), $Catids));
編集:次のこともできます:
->quoteInto('cat_index.category_id IN (?)', array_merge(array($filters['category_id']), $Catids), 'INTEGER');
値が数値であることが確実な場合 - これにより、個々の値が引用符で囲まれることがなくなります。ただし、MySQL は引用符で囲まれた整数で完全に機能します。