2017-08-17 5 views
0

私はこのような何かをやってcreateCommand持つ列を照会しようとしています:Yii2 - bindValues()によって渡されたパラメータを引用符で囲むことはできませんか?

理想的
Yii::$app->db->createCommand('Select column1 from table where column2 in :array) 
     ->bindValues(['array'=>['(1,2,3,4,5)', PDO::PARAM_INT]])->queryColumn('COLUMN1'); 

私はSQLは、ラップ引用符が常にある実行したときに私のSQL文がしかし

select column1 from table where column2 in (1,2,3,4,5) 

のように実行したいです次のようなバインドされたパラメータの周り:

select column1 from table where column2 in '(1,2,3,4,5)' 

Pを使用するようにPDOを指定した後になぜこれが起こっているのかわかりませんDO :: PARAM_INT。 intを引用符で囲まないといけないのですか?

答えて

0

あなたは、クエリビルダを使用して、わずかに異なるアプローチを試みることができる:

$rows = (new \yii\db\Query()) 
    ->select('column1') 
    ->from('table') 
    ->where(['column2' => [1,2,3,4,5]]) 
    ->column(); 

これは、所望の効果を有する:句が自動的にあるために渡された配列の中に(...)構文を使用して生成されます。

配列の型を明示的にINTにキャストする必要があるかどうかはわかりませんが、内部でPHPの内部でSTRING型になっている場合は...

関連する問題