4

クエリには次のコードがあります。

$conditions[]=array('codiceBiblio IN (?)'=> $tot);

$tot は文字列です (例: 2345,5657,4565,5678)。
この場合、クエリは次のようになります。

SELECT [...] WHERE codiceBiblio IN ('2345,5657,4565,5678')

ただし、最初のレコードのみが返されます。

したがって、次のようになります。

SELECT [...] WHERE codiceBiblio IN (2345,5657,4565,5678)

どうすればいいですか?


クエリの作成方法 クエリの

コードは次のとおりです。

// General Query
$conditions = array(
    'editore LIKE' => "%$e%",
    'titolo LIKE' => "%$t%"
);

$conditions にユーザーの選択肢を入力します。たとえば、次のようになります。

if ($anno&&$anno2)
    $conditions[] = array('anno BETWEEN ? AND ?' => array($anno,$anno2));

if (isset($menu)&&$menu!='')
    $conditions[]=array('classe LIKE' => "%$menu%");
4

2 に答える 2

8

配列を使用してIN()句を省略します。マニュアル (複雑な検索条件) には、次の例が示されています。

array('Company.status' => array('inactive', 'suspended'))

... 次の SQL が生成されます。

`Company`.`status` IN ('inactive', 'suspended')

最初に爆発する必要がある$totような文字列の場合。2345,5657,4565,5678

免責事項:これは Cake 2 で動作しますが、1.2 については不明です。

于 2013-02-27T13:13:50.470 に答える
1

Álvaro G. Vicario の提案は正しいものですが、これを行うこともできます。

$conditions[]=array('codiceBiblio IN (' . $tot . ')');
于 2013-02-27T14:53:05.570 に答える