YII 1.1 - Query Builder: как получить несколько записей оператора IN в формате FETCH_KEY_PAIR - PullRequest
0 голосов
/ 12 января 2019

Мы столкнулись с некоторой проблемой при получении записи в формате PDO. Смотрите ниже мой пример кода:

$getCategories= Yii::app()->db->createCommand()
        ->select('id,category_name')
        ->from('content_categories')
        ->where('id IN (:id)', array(':id'=>$getContentList['content_category_value']))
        //->where("id IN ({$getContentList['content_category_value']})")
        ->queryAll();
print_r($getCategories); exit;

Выход:

Array
(
    [0] => Array
        (
            [id] => 1525
            [category_name] => TV 
        )

)

Над запросом $getContentList['content_category_value']) возвращает 1525,45, но мы получаем только одну запись.

Когда мы выполняем запрос вручную:

SELECT * FROM `content_categories` WHERE `id` IN (1525,45);

Возвращает:

enter image description here

На самом деле у нас есть две категории, но приведенный выше запрос извлекает только одну. Не могли бы вы проверить и помочь мне, как мы показываем выборку из нескольких записей, используя концепцию PDO.

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Если $getContentList['content_category_value'] является строкой, то она будет использоваться в запросе как строка. Так что вы, вероятно, получаете что-то вроде этого:

SELECT * FROM `content_categories` WHERE `id` IN ('1525,45');

Если вы хотите построить условие IN, вам нужно использовать массив значений с оператором IN:

->where(['in', 'id', explode(',' $getContentList['content_category_value'])])
0 голосов
/ 12 января 2019

Не проверено, но вы можете попробовать вот так,

 $getCategories= Yii::app()->db-
 >createCommand()
    ->select('id,category_name')
    ->from('content_categories')
    ->where(array('in', 'id', 
    $getContentList['content_category_value']))    
    ->queryAll();
print_r($getCategories); exit;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...