19452


CentOS 6.6  
PHP 5.4.41 (cli)  
cakephp 2.7.1

CakePHPのfind条件にORを設定  
下記のコード1で検索を行うと問題なく動きます

コード1

[code]

    $conditions['OR'] = array('Sample.test_id' => array(1,2));
    $p_Sample = $this->paginate('Sample',$conditions);
    
[/code]

or条件を可変にするため下記のコード2で実行すると  
Sample.test_id=1の条件のみの結果となりカンマ以降が検索されません。  
コード2

[code]

    $con='1,2';
    $conditions['OR'] = array('Sample.test_id' => array($con));
    $p_Sample = $this->paginate('Sample',$conditions);
    
[/code]

原因は何でしょうか？  
ご教授のほどよろしくお願いします。


CC BY-SA 3.0
2015-11-29T15:56:53.843
19445
2015-11-30T01:21:06.247
8168
question
php cakephp
CakePHPのfind条件にORを設定


コード2は検索条件として`1,2`という文字列1個の配列を渡している、つまり

$conditions['OR'] = array('Sample.test_id' => array('1,2'));

になるので、

[code]

    WHERE Sample.test_id => '1,2';
    
[/code]

になって、おそらくtest_idは整数型だと思うので

[code]

    WHERE Sample.test_id = 1;
    
[/code]

と型変換されてるんでしょう。

[code]

    $con=array(1,2);
    $conditions['OR'] = array('Sample.test_id' => $con);
    
[/code]

なら意図通りになると思います。


CC BY-SA 3.0
2015-11-30T01:21:06.247
19452
2015-11-30T01:21:06.247
5793
19445
answer