Yii2 — Можно ли не заключать в кавычки параметры, передаваемые в bindValues ​​()?

Я пытаюсь запросить столбец с createCommand, делая что-то вроде этого:

 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 выполнялся как

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

Однако, когда SQL выполняется, всегда есть кавычки, обернутые вокруг связанных параметров, например, так:

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

Я не уверен, почему это все еще происходит после того, как я определил PDO для использования PDO :: PARAM_INT. Разве int не должен цитироваться?

0

Решение

Вы можете попробовать немного другой подход, используя Query Builder:

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

Это дает желаемый эффект: предложение where автоматически генерируется с использованием синтаксиса in (…) из-за переданного массива.

Не уверен, если вам явно нужно привести типы массива к INT, если они внутри PHP имеют тип STRING внутри …

0

Другие решения

Других решений пока нет …